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個按升序排序的整數。
好了,以上概括的是開發中常用的幾種集合類,希望幫到大家。