java中 列表,集合,數組之間的轉換


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])
}

將一個數組列表轉換為數組 

  1. String[] stringArray = { "a", "b", "c", "d", "e" };  
  2. ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));  
  3. String[] stringArr = new String[arrayList.size()];  ------------------定義數組必須先定義數組的長度,由於數組長度固定
  4. arrayList.toArray(stringArr);  
  5. for (String s : stringArr)  
  6.     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) 

  1. Set<String> set = new HashSet<String>(Arrays.asList(stringArray));  
  2. System.out.println(set);  
  3. //[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());  
  
    }  
  
}  

from:http://www.cnblogs.com/111testing/p/6399394.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM