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()的时候一定要小心!