一個List賦值給一個List

轉自:Click

1 List 是通過指針指向地址來查詢和存儲數據的。而如果直接將一個List賦值給另一個List。則會導致該兩個List都指向同一個地址。而導致如果後一個List的元素值改變,前一個List的元素值也隨之改變。這個要記住。
如:List list1=new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
System.out.println("list1:"+list1);

List list2=new ArrayList();

list2=list1;//簡單的直接賦值
list2.set(1,"12");
System.out.println("list1:"+list1);
System.out.println("list2:"+list2);




2 所以爲了避免出現上述現象和後果。則通過將元素值賦值給list的方法。這樣則不會導致上述現象。
如:List list1=new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
System.out.println("list1:"+list1);

List list2=new ArrayList();
//通過循環來賦值給另一個List,當然可以將循環換成"list2.addAll(list1);"
for(int i=0;i<list1.size();i++){
Object object=list1.get(i);
list2.add(object);
}
list2.set(1,"12");
System.out.println("list1:"+list1);
System.out.println("list2:"+list2);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章