『壹』 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中
}
『貳』 java 如何將一個list中的值全部復制到另一個list中
ArrayList<String> list1 = new ArrayList<String>();
list1.add("b");
list1.add("d");
// System.out.println(list1);
ArrayList<String> list2=new ArrayList<String>();
list2.addAll(list1);//將list1添加到list2中
System.out.println(list2);
『叄』 java.util.ArrayList.clone是不是徹底的克隆
先來看看 源碼 java.util.ArrayList.clone()
java.util.ArrayList.clone()返回此ArrayList實例的淺表副本(即本身是不可復制的元素)。
聲明
以下是java.util.ArrayList.clone()方法的聲明
public Object clone()
返回值
這個方法返回當前ArrayList實例的一個副本。
例子
下面的示例演示java.util.Arraylist.clone()方法的用法。
package com.yii;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String args[]) {
// create an empty array list
ArrayList<StringBuilder> arrlist1 = new ArrayList<StringBuilder>();
// use add for new value
arrlist1.add(new StringBuilder("Learning-"));
// using clone to affect the objects pointed to by the references.
ArrayList arrlist2 = (ArrayList) arrlist1.clone();
// appending the string
StringBuilder strbuilder = arrlist1.get(0);
strbuilder.append("list1, list2-both pointing to the same StringBuilder");
System.out.println("The 1st list prints: ");
// both lists will print the same value, printing list1
for (int i = 0; i < arrlist1.size(); i++) {
System.out.print(arrlist1.get(i) + " ");
}
System.out.println("The 2nd list prints the same i.e:");
// both lists will print the same value, printing list2
for (int i = 0; i < arrlist2.size(); i++) {
System.out.print(arrlist2.get(i));
}
}
}
讓我們來編譯和運行上面的程序,這將產生以下結果:
The 1st list prints:
Learning-list1, list2 - both pointing to the same StringBuilder
The 2nd list prints the same i.e:
Learning-list1, list2 - both pointing to the same StringBuilder
結論:
java.util.ArrayList.clone()是淺層拷貝。
『肆』 java 如何指定原List其中一部分進行復制到新的list
publicstaticvoidmain(String[]args){
List<String>list1=newArrayList<String>();
List<String>list2=newArrayList<String>();list1.add("1");
list1.add("2");
list1.add("3");list2.add("a");//賦值list1前兩個到list2中
System.out.println(list2);
list2.addAll(list1.subList(0,2));//可以先按下標截取,再添加
System.out.println(list2);
}
//運行結果如下:
[a]
[a,1,2]
望採納
『伍』 java,,"淺克隆,只復制一個對象 ,深克隆 對象和引用一起復制"有java實例嗎不理解啊
對只包含進本類型的類來說,無所謂深克隆。但是一個類包含集合類或者復雜的類,就要考慮二者的區別了。
class Student {
private int id;
private Address address;
private ArrayList<Book> bookList;
}
對於以上類的一個對象a和克隆類 o來說:
淺克隆:
a !=o 但是 a.address == o.address, a.bookList == o.bookList
深克隆:
a !=o 但是 a.address != o.address, a.bookList != o.bookList
並且 bookList中的每個元素不是相同對象。
簡言之, 淺克隆只復制本對象,深克隆除了本對象,其兒子、孫子、....都要克隆。
以上純手敲,有錯請包涵。
『陸』 java復制List最快方法是什麼
估計沒有快的。復制都是線性的。用多線程都不見得更快。重新設計演算法吧,避免復制
其他的復制方法
List<Integer> a = b.clone();
或
Collections.(a,b);
『柒』 java把一個list中的內容添加到另一個list中
在JAVA中,想要把一個list中的內容添加至另一個list中,有兩種方法:
採用循環的方法。通過循環第一個ArrayList,然後通過每循環一次的方式,將值賦值給另一個ArrayList。具體代碼實現如下:
2.集合是Java API所提供的一系列類,可以用於動態存放多個對象。集合與數組的不同在於,集合是大小可變的序列,而且元素類型可以不受限定,只要是引用類型。集合中不能放基本數據類型,但可以放基本數據類型的包裝類。 集合類全部支持泛型,是一種數據安全的用法。java列表是集合的一種,並且列表中的元素是有序的,且允許重復。java列表又稱為java list。