在 Java2中,有一套設計優良的接口和類組成了Java集合框架Collection,使程序員操做成批的數據或對象元素極爲方便。這些接口和類有不少對抽象數據類型操做的API,而這是咱們經常使用的且在數據結構中熟知的。例如Map,Set,List等。而且Java用面向對象的設計對這些數據結構和算法進行了封裝,這就極大的減化了程序員編程時的負擔。程序員也能夠以這個集合框架爲基礎,定義更高級別的數據抽象,好比棧、隊列和線程安全的集合等,從而知足本身的須要。
Java2的集合框架,抽其核心,主要有三種:List、Set和Map。以下圖所示: java
須要注意的是,這裏的 Collection、List、Set和Map都是接口(Interface),不是具體的類實現。 List lst = new ArrayList(); 這是咱們日常常常使用的建立一個新的List的語句,在這裏, List是接口,ArrayList纔是具體的類。
經常使用集合類的繼承結構以下:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Map<--SortedMap<--TreeMap
Map<--HashMap
程序員
Set:不能包含重複的元素。算法
List:是一個有序的集合,能夠包含重複的元素。提供了按索引訪問的方式。編程
Map:包含了 key-value 對。Map 不能包含重複的 key。安全
List總結: 數據結構
Set總結: 框架
Map:
Map 是一種把鍵對象和值對象進行關聯的容器,而一個值對象又能夠是一個Map,依次類推,這樣就可造成一個多級映射。Map有兩種比較經常使用的實現:HashMap和TreeMap。 數據結構和算法
鍵和值的關聯很簡單,用put(Object key,Object value)方法便可將一個鍵與一個值對象相關聯。用get(Object key)可獲得與此key對象所對應的值對象。 線程