Java集合框架的介面和類層次關係結構圖
集合框架中的核心介面
介面 |
說明 |
實體類 |
Collection |
一種基本介面,它定義了一些普通操作,通過這些操作,可以將一個物件集合當作一個獨立單元來對其進行存放和處理 |
|
Set |
Set介面擴充套件了Collection介面,用來提供集合的維護(該集合中的元素以某一排列順序儲存)所需的功能 |
HashSet LinkedHashSet |
SortedSet |
SortedSet介面擴充套件了Set介面,用來提供集合的維護(該集合中的元素以某一排列順序儲存)所需的功能 |
TreeSet |
List |
List介面擴充套件了Collection介面,用來存放某個元素序列 |
ArrayList Vector LinkedList |
Map |
一種基本介面,定義了用來實現鍵/值(key-value)對映關係維護的操作 |
HashMap Hashtable LinkedHashMap |
SortedMap |
針對以鍵序排列存放其對映關係的對映,該介面擴充套件了Map介面 |
TreeMap |
集合及對映實現類表
實體集合/對映 |
介面 |
重複項 |
有序/排序 |
元素呼叫方法 |
實現類資料結構 |
HashSet |
Set |
元素唯一 |
無順序 |
equals()、hashCode() |
Hash表 |
LinkedHashSet |
Set |
元素唯一 |
插入排序 |
equals()、hashCode() |
Hash表和雙向連結串列 |
TreeSet |
SortedSet |
元素唯一 |
排序 |
equals()、compareTo() |
平衡樹 |
ArrayList |
List |
可以重複 |
插入排序 |
equals() |
可調大小陣列 |
LinkedList |
List |
可以重複 |
插入排序 |
equals() |
連結串列 |
Vector |
List |
可以重複 |
插入排序 |
equals() |
可調大小陣列 |
HashMap |
Map |
鍵唯一 |
無順序 |
equals()、hashCode() |
Hash表 |
LinkedHashMap |
Map |
鍵唯一 |
鍵插入順序/條目訪問順序 |
equals()、hashCode() |
Hash表和雙向連結串列 |
Hashtable |
Map |
鍵唯一 |
無順序 |
equals()、hashCode() |
Hash表 |
TreeMap |
SortedMap |
鍵唯一 |
鍵序排列 |
equals()、compareTo() |
平衡樹 |
ollection和Collections的區別
首先要說的是,"Collection" 和 "Collections"是兩個不同的概念;
如下圖所示,"Collection"是集合類(Collection)的頂級介面,然而”Collections“是一個提供了一系列靜態方法的集合工具類;
Collection的類層次結構圖
Map的類層次結構圖
總結
程式碼示例
package simplejava; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; public class Q7 { public static void main(String[] args) { List<String> a1 = new ArrayList<String>(); a1.add("Program"); a1.add("Creek"); a1.add("Java"); a1.add("Java"); System.out.println("ArrayList Elements"); System.out.print("\t" + a1 + "\n"); List<String> l1 = new LinkedList<String>(); l1.add("Program"); l1.add("Creek"); l1.add("Java"); l1.add("Java"); System.out.println("LinkedList Elements"); System.out.print("\t" + l1 + "\n"); Set<String> s1 = new HashSet<String>(); // or new TreeSet() will order the elements; s1.add("Program"); s1.add("Creek"); s1.add("Java"); s1.add("Java"); s1.add("tutorial"); System.out.println("Set Elements"); System.out.print("\t" + s1 + "\n"); Map<String, String> m1 = new HashMap<String, String>(); // or new TreeMap() will order based on keys m1.put("Windows", "2000"); m1.put("Windows", "XP"); m1.put("Language", "Java"); m1.put("Website", "programcreek.com"); System.out.println("Map Elements"); System.out.print("\t" + m1); } }
結果列印: