Java。如何将一个LinkedList里的元素全部复制到另一LinkedList容器里?

然后我改变了其中一个对另外一个没有影响,需要怎么做???给我个例子吧。谢谢。

LinkedList的Clone()只是浅复制,也就是只能复制对象的引用,而不能再内存中新生成一个对象,所以你复制之后的LinkedList和原始的LinkedList中存储的对象是共享的。
要想不共享,那只能覆盖你原始LinkedList中存放类的Clone()方法,在这个方法中new一个这个类的新实例,将对象的属性赋值给一个新实例。
然后new一个新的LinkedList实例,遍历原始LinkedList中的每个元素,调用这个元素的Clone(),将得到的新元素添加到新的LinkedList中。
大概的代码意思如下
ElementClass是LinkedList中存储的元素的类
public class ElementClass{
private String attributeOne;
......
public void setAttributeOne(String attValue){
this.attributeOne = attValue;
}
/* 覆盖Clone方法,新建一个本类的实例,并将对象的属性值完全复制过去*/
public Object Clone(){
ElementClass newInstance = new ElementClass();//新建一个本类实例
newInstance.setAttributeOne(this.attributeOne);//复制属性
return newInstance;
}
}

LinkedList newList = new LinkedList();//新建一个LinkedList实例
Iterator it = oldList.iterator();获取原始List的遍历器
while(it.hasNext()){
newList .add(((ElementClass) it.next()).clone());//遍历元素,将克隆的新对象加入新的List中
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-16
给你写了个简单的例子。。。。。你可以看看。。。。新的List里面添加了一个新的元素。。。。但是旧的List里面是没有的。。。

希望对你有帮助。。。。仍有问题可以HI我。。。

import java.util.LinkedList;

public class Test {
public static void main(String args[]) {
LinkedList<Integer> oldL = new LinkedList<Integer>();
oldL.add(1);
oldL.add(2);
System.out.println(oldL);

LinkedList<Integer> newL = new LinkedList<Integer>(oldL);
newL.add(3);
System.out.println("old list : " + oldL);
System.out.println("new list : " + newL);
}
}

输出结果:
[1, 2]
old list : [1, 2]
new list : [1, 2, 3]本回答被网友采纳
第2个回答  2011-02-16
LinkedList newList = new LinkedList(oldList);
或者,LinkedList实现了Cloneable接口,直接调用clone()也可以。

Java。如何将一个LinkedList里的元素全部复制到另一LinkedList容器里...
ElementClass是LinkedList中存储的元素的类 public class ElementClass{ private String attributeOne;...public void setAttributeOne(String attValue){ this.attributeOne = attValue;} \/* 覆盖Clone方法,新建一个本类的实例,并将对象的属性值完全复制过去*\/ public Object Clone(){ ElementClass newInst...

怎么把linkedlist里面的元素倒置过来
要自己做可以:public class Baidu { public static void main(String args[]) { LinkedList<String> from = new LinkedList<String>();LinkedList<String> to = new LinkedList<String>();from.add("1");from.add("2");from.add("3");Iterator<String> it = from.iterator();printList(fro...

可以将一个linkedlist<string>对象赋值给linkedlist类型的变量吗_百度...
方法一:从 LinkedList<string>逐个取值,添加到LinkedList<Object> 里.方法二:去掉其中任意1个List的泛型 方法三:把LinkedList<Object>修改成LinkedList<? extends Object> 方法四: 创建LinedList<Object>时,把 LinkedList<string>list1作为参数传进去 参考代码.import java.util.LinkedList;public class Print...

JAVA怎么实现双向循环链表? 如果用LINKEDLIST,我只知道他有hasnext,ne...
LinkedList虽然接口是单项的,但内部实现是双向的。如下方法可以使用:Iterator<E> descendingIterator() 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。for(Object o : list.descendingIterator()){ ... }

可以将一个linkedlist<string>类型的对象赋值给linkedlistl类型的变...
可以将一个linkedlist<string>类型的对象赋值给linkedlistl类型的变量吗 泛型<?>中?必须指定具体类型,当你创建LinkedList<String>对象后就指明该集合中要存放String类型的值,其他值无法存放。这个再编译器上编译下就可以得出结论,如下:LinkedList<String> list = new LinkedList<String>();list.add("1...

java linked list里的元素顺序反过来
定义一个LinkedList<Integer> templist = new LinkedList<>();来存储list里面的值,通过迭代list,将值插入在templist的头上,那么templist就是list的反转了,最后将templist赋值给list就行了!如下代码:public void reverse() {LinkedList<Integer> list = new LinkedList<>();LinkedList<Integer> temp...

输入任意十个整数存入linkedlist集合用java实现
LinkedList中,在插入、删除集合中任何位置的元素所花费的时间都是一样的—O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。所以,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是对其它指定位置的插入、删除操作,最好选择...

ArrayList与LinkedList的扩容
一、ArrayList扩容实现步骤 1.扩容: 把原来的数组复制到另一个内存空间更大的数组中; 2.添加元素: 把新元素添加到扩容以后的数组中。二、源码分析 关键属性:解析ArrayList的三个构造方法:分析常用方法:LinkedList的扩容机制又是怎么样的呢?1.LinkedList是一个继承于Abstract...

java list 元素替换问题
List<String> list2=new ArrayList<String>();list1.add(a);a='4567';list2.add(a);你想把list1中a元素的值替换为list2的a元素的值?这样其实是不行的,因为这里面的a相当于个中间引用,真正存进去的是‘123’和‘4567’,list1,list2里面存在的就只有这个值,没有a,这是由于java机制是...

java linkedlist 递归 bug
去看看LinkedList这个类的第242行,就是这行出现了问题,你也没有把LinkedList这个类给复制出来,看不到具体问题是什么。我还说帮你解决了,看来楼下 已经搞定了,就是你的isNull方法出了错,第三次回调 append的时候,list1是一个空的list,但是不代表它是null的,所以代码判断第四次还是执行的else...

相似回答