標籤:
java集合架構(Java Collection Framework,簡稱JCF)是由一組類和介面組成的。其主要功能就是用來將儲存的資料以某種特定的結構組織,並以特定的方式訪問。其目的就是提供一個處理對象集合的通用架構,減少程式員處理不同對象集合是的編碼量。
集合類中的一些區別,一是是否支援重複元素,二是包含的元素是否有序,三是集合類中元素是否能為null元素。所以集合將對象分為了三種類型:
Set(集):對象容器中的對象沒有順序,並且不能重複。
List(列表):對象容器中的對象按照索引順序排序,並且可以有重複的對象。
Map(映射):對象容器中的元素包含著一對“鍵對象(Key)-值對象(Value)”映射,其中鍵對象不能重複,值對象可以重複。
Set介面繼承了Collection介面。set集合包含許多方法。下面我們用HashSet來說明Set的特徵:
package pkg;import java.util.*;public class HashSetDemo{ public static void main(String[] args) {
/*new 一個HashSet對象,泛型是<String>*/ Set<String> set = new HashSet<String>(); String str1 = "123"; String str2 = "234"; String str3 = "345"; String str4 = "456"; set.add(str1); set.add(str2); set.add(str3); set.add(str4);
//通過foreach遍曆 for (String string : set) { System.out.println(string); } }}
代碼中遍曆的結果是隨機的,代碼中遍曆的元素是沒有順序的。這便體現了Set中的特徵。
List介面也是繼承於Collection介面的,因為List中的元素是有序的,所以我們可以通過元素的位置(也就是索引)來直接引用元素。List介面中的ArrayList和數組類似,表示一組輸入索引的元素,區別在於ArrayList沒有固定的大小,長度可變。我們來看看ArrayList的操作:
import java.util.*;public class ArrayListDemo { public static void main(String[] args) { //new 一個ArrayList對象 List list = new ArrayList(); //添加元素 list.add(1); list.add("abc"); list.add(10); list.add(new Integer(4)); //根據索引刪除元素 list.remove(0); //重設元素 list.set(0, 22); for(int i=0;i<list.size();i++){//size是求ArrayList的長度 System.out.println(i + "=" + list.get(i));//get是顯示ArrayList中的元素 } }}
再有就是map介面,在map中鍵(key)和值(value)是一一對應的,通過指定的鍵,可以找到對應的唯一的值。HashMap是基於雜湊演算法的map介面實現的,將鍵儲存在雜湊表中進行維護,鍵是唯一的。但是HashMap並不保證鍵是以特定的順序排列。下面我們看看HashMap的基本用法:
import java.util.*;public class HashMapDemo { public static void main(String[] args) { //new 一個HashMap對象 Map<String,String> map = new HashMap<String,String>(); //在Map介面中是用put方法添加索引值對的 map.put("a1", "abc"); map.put("b1", "12"); map.put("S0001", "張三"+" 男"); //刪除 map.remove("a1"); //使用iterator遍曆 Set<String> keys = map.keySet(); for(Iterator<String> i = keys.iterator();i.hasNext();){ String key = i.next(); String value = map.get(key); System.out.println(key + "=" +value); } }}
以上就是集合中關於Set、List、Map的基本概念和操作。最後在說說泛型,泛型在代碼中用<E>表示(其中E只是個預留位置),泛型就是允許在定義類或者介面時指定類型形式參數,這個類型形式參數將在聲明變數、建立對象時確定(即傳入的實際參數)。通過泛型將參數類型化後,我們就可以強迫程式在編譯期就檢查從集合中取得的資料類型,以達型別安全的目的,並省去從集合取出資料在轉型的動作。
java集合架構