java中 列表,集合,數組之間的轉換
java中 列表,集合,數組之間的轉換
java中 列表,集合,數組之間的轉換
List和Set都是接口,它們繼承Collection(集合),集合裏面任何數據類型都可以添加
List是有序的隊列,可以用重複的元素;而Set是數學概念中的集合,不能有重複的元素。
數組 長度固定 可存儲任何數據類型 集合 長度可變(包括:list,set)可存儲任何數據類型
列表 list 有序 長度可變 元素可重複 集set 無序 長度可變 元素不可重複
將數組轉化爲一個列表時,程序員們經常這樣做:
String[] arr = {"a","b","c", "d", "e"};
List<String> list = Arrays.asList(arr);
Arrays.asList()會返回一個ArrayList對象,ArrayList類是Arrays的一個私有靜態類,
而不是java.util.ArrayList類,java.util.Arrays.ArrayList類有set()、get()、contains()方法,
但是沒有增加元素的方法,所以它的大小是固定的,想要創建一個真正的ArrayList類,
你應該這樣做:
String[] arr = {"a","b","c", "d", "e"};
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
也可以這樣做:
for(int i=0; i<arry.length; i++){
list.add(arry[i])
}
將一個數組列表轉換爲數組
- String[] stringArray = { "a", "b", "c", "d", "e" };
- ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
- String[] stringArr = new String[arrayList.size()]; ------------------定義數組必須先定義數組的長度,由於數組長度固定
- arrayList.toArray(stringArr);
- for (String s : stringArr)
- System.out.println(s);
List轉換爲Array也可以這樣處理:
ArrayList<String> list=new ArrayList<String>();
String[] strings = new String[list.size()]; ------------------定義數組必須先定義數組的長度,由於數組長度固定
list.toArray(strings);
反過來,如果要將數組轉成List怎麼辦呢?如下:
String[] s = {"a","b","c"};
List list = java.util.Arrays.asList(s);
將一個數組轉換爲集(set)
- Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
- System.out.println(set);
- //[d, e, b, c, a]
將一個集(set) 轉換爲數組
arry=set.toArry();
arry=(String[])set.toArry(new String[set.size()]);
下面是一段代碼顯示了 數組,列表,集合之間的轉換
package test; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set;
public class Test2 {
public static void main(String[] args) { List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); // list.add(1);//會產生java.lang.ArrayStoreException異常 // 當list中的數據類型都一致時可以將list轉化爲數組 Object[] array = list.toArray(); System.out.println("從list轉換成的對象數組長度爲:" + array.length); // 在轉化爲其它類型的數組時需要強制類型轉換,並且,要使用帶參數的toArray方法,參數爲對象數組, // 將list中的內容放入參數數組中,當參數數組的長度小於list的元素個數時,會自動擴充數組的長度以適應list的長度 String[] array1 = (String[]) list.toArray(new String[0]); System.out.println("從list轉換成的字符串數組長度爲:" + array1.length); // 分配一個長度與list的長度相等的字符串數組 String[] array2 = (String[]) list.toArray(new String[list.size()]); System.out.println("從list轉換成的字符串數組長度爲:" + array2.length); list.clear(); // 將數組轉換成list for (int i = 0; i < array.length; i++) { list.add(array[i]); } System.out.println("將數組轉換成list的元素個數爲:" + list.size()); list.clear(); // 直接使用Arrays的asList方法 list = Arrays.asList(array); System.out.println("將數組轉換成list的元素個數爲:" + list.size()); Set set = new HashSet(); set.add("a"); set.add("b"); // 將set轉換爲數組 array = set.toArray(); array1 = (String[]) set.toArray(new String[0]); array2 = (String[]) set.toArray(new String[set.size()]); System.out.println("從Set轉換成的對象數組長度爲:" + array.length); System.out.println("從Set轉換成的字符串數組長度爲:" + array2.length); // 數組轉換成Set // 將數組轉換成List後,再用List構造Set set = new HashSet(Arrays.asList(array)); System.out.println("將數組轉換成Set的元素個數爲:" + list.size()); // 將Set清空,然後把數組轉換成的list全部add set.clear(); set.addAll(Arrays.asList(array1)); System.out.println("將數組轉換成Set的元素個數爲:" + list.size()); } }