1. 程式人生 > >Java語言學習(八):集合類框架

Java語言學習(八):集合類框架

    Java中提供了各種資料集合類,這些類主要用於儲存複雜結構的資料。下面將介紹常用的幾種集合類的用法。

    ArrayList集合可以看做一個動態的陣列,比普通陣列更加靈活,更適合儲存未知數量的資料。它突破了普通陣列固定長度的限制,可以隨時向陣列中新增和移除元素,而且不受型別的限制,可以新增任意型別的元素值或物件。如下:

//宣告集合型別
ArrayList<String> arrList1 = new ArrayList<String>();
arrList1.add("Bob");
arrList1.add("Cily");
//不宣告集合型別
ArrayList arrList2 = new ArrayList();
arrList2.add("Angle");
arrList2.add(66);
arrList2.add(null);
arrList2.add(true);
arrList2.add(arrList1);
//遍歷
for(int i=0;i<arrList2.size();i++){
    System.out.println(arrList2.get(i));
}

    輸出為:

Angle
66
null
true
[Bob, Cily]

    通過上面的例子可以看出:ArrayList集合的初始化既可以宣告型別,也可以忽略。當宣告型別時,只能新增同類型的元素;當不宣告型別時,不受型別的限制。在遍歷時,get()方法獲取元素,get()獲取的是Object型別,雖然可以通過toString()轉為String型別,但由於元素型別不一致,不能全部都轉化,容易報錯,比如空值,需要大家注意。

    在開發中,常見的操作有:新增元素、刪除元素、遍歷、集合大小、是否包含某個元素等,接著上面的例子:

//刪除元素
arrList2.remove(null);
//是否包含某個元素
boolean isHave = arrList2.contains("Angle");
int ret = arrList2.indexOf("Angle");

    關於ArrayList集合的其他用法這裡不做詳述了,可以自行檢視。

    List<T>泛型集合表示可通過索引訪問物件的強型別代表,它提供用於對列表進行搜尋、排序和操作的方法,相對於ArrayList,List<T>泛型集合在大多數情況下執行的更好且是型別安全的。如下:

List<String> list = new ArrayList<String>();
list.add("Hello");
list.add("World");

    它的操作基本和ArrayList集合一致。

    Map集合可以儲存鍵值對映關係,具體實現有很多,其中常見的有:HashMap是最常用的對映集合,它只允許一條記錄的鍵為null,但不限制集合中值為null的數量;TreeMap集合將對集合中的鍵值排序,預設為升序。Map集合常用操作有:新增鍵值對put()、獲取鍵對應的值get()、獲取鍵的Set集合keySet()、遍歷等,如下:

//初始化:指定鍵值各自的型別
Map<String,String> map = new HashMap<String,String>();
//新增鍵值對
map.put("1", "BeiJing");
map.put("2", "ShangHai");
map.put("3", "ShenZhen");
//獲取鍵對應的值
System.out.println(map.get("1"));
//遍歷
for(String key : map.keySet()){
   System.out.println(key+" : "+map.get(key));
}

    輸出為:

BeiJing
3 : ShenZhen
2 : ShangHai
1 : BeiJing

    上面通過for迴圈遍歷的方式是很常見的,注意分清key和value,當然還有其他的遍歷方式,如迭代器遍歷:

Iterator<String> it = map.keySet().iterator();
while(it.hasNext()){
    String key = it.next();
    System.out.println(key+" : "+map.get(key));
}

    Map排序一般通過比較器實現,像TreeMap集合預設升序,這裡不做詳述了,感興趣的可以自行檢視。

    TreeSet集合屬於Set集合的子類,Set集合不允許有重複的元素。如下不重複隨機陣列排序例項:

TreeSet<Integer> set = new TreeSet<Integer>();
Random ran = new Random();
int count = 0;
while(count < 10){
   //新增100以內的隨機整數
   boolean ret = set.add(ran.nextInt(100));
   if(ret)
       count++;
}
//建立大小相等的陣列
Integer[] array = new Integer[set.size()];
//獲取集合中的陣列
set.toArray(array);
//遍歷輸出陣列元素
for(int value : array)
   System.out.print(value+" ");

    輸出的是10個按升序排序的整數。

    好了,以上概括的是開發中常用的幾種集合類,希望幫到大家。