List集合使我們經常使用到的集合,今天無聊時,查看了一下List的方法。其中有一個toArray()方法,這個方法可以講List轉換成Arrays數組。但是我們在吧Arrays轉換成List的時候,我發現了一個問題。我使用額asList()的方法,吧Arrays轉成List,但是我發現只要Arrays的數據變化時,List中的數據也跟着變化。
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Test
{
public static void main(String[] args)
{
String[] arr = {
"111", "222", "333"};
// List<String> arraylist = new ArrayList<String>();
// arraylist = Arrays.asList(arr);
List<String> linklist1 = new LinkedList<String>();
List<String> linklist = new LinkedList<String>();
linklist = Arrays.asList(arr); //將Arrays==>List
for (String s : linklist) //將linklist賦值給linklist1
{
linklist1.add(s);
}
// 測試
// String[] arr2 = (String[]) arraylist.toArray();
String[] arr2 = (String[]) linklist.toArray();
System.out.println("arr2長度" + arr2.length);
for (String string : arr2)
{
System.out.println(string);
}
System.out.println("***********************");
arr[2] = "444";
System.out.println("數組arr:");
System.out.println(linklist);
System.out.println("數組arr2");
for (String string : arr2)
{
System.out.println(string);
}
System.out.println("listlink1");
System.out.println(linklist1);
}
}
其實我想表達的就是:我們在使用toArray()方法的時候沒有任何問題,但是asList()的方法並不是將Arrays賦值給List集合,而只是將他的引用賦給了List。 就像上面表述的一樣,在我們使用for-each將一個list賦值給另一個list後,無論怎樣改變Arrays,都不會影響他的值了。所以以後再使用asList()的時候一定要小心!