List集合與Arrays之間的轉換問題

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

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