為了讓大家對集合有個基本的框架感,所以先上一張集合的思維導圖:
D~2ZZB1KQONWKAN@~WRK{6J.png
java里集合有兩個,一個是Collection接口,另一個是Map接口。既然是接口那么就有實現接口的類,Map接口的實現類有TreeMap和HashMap,其中TreeMap里面的元素是有序存儲的。HashMap里面的元素是按哈希碰撞算法產生的鍵值對存儲的,類比于倉庫存儲來說,有相同的哈希值的元素如同有相同的房間號的貨物會放在同一個房間,然后同一個房間的物品會有不同的唯一的序列號(即物品的房間號可能相同,但是物品序列號卻不可以相同,是唯一的)。然后搜索的時候會先檢查房間號再匹配物品序列號。
Collection接口有兩個派生接口:Set接口和List接口,Set接口里面的元素是無序且不可重復的,Lis接口里面的元素是有序且可以重復的。實現List接口的實現類有ArrayList和LinkedList。Set接口的實現類為TreeSet和HashSet,其中TreeSet里面的元素是有序存儲的。
下面給出Set的一個代碼示例:
import java.util.*;
public class SetExample {
public static void main(String args[]) {
Set set = new HashSet();
set.add("BAAAAA");
set.add("EAAAAA");
set.add("FAAA");
set.add("EAAAAA");
set.add("CAAAA");
System.out.println(set);
Set sortedSet = new TreeSet(set);
System.out.println(sortedSet);
}
}
輸出結果1:[FAAA,CAAAA,BAAAAA,EAAAAA],解釋:這里默認優先輸出長度短的,再考慮優先輸出首字母小的,重復的只輸出一次。
輸出結果2:[BAAAAA,CAAAA,EAAAAA,FAAA],解釋:這里優先輸出首字母小的,重復的只輸出一次。