目錄
持續更新中.....
Java數據結構
枚舉(Enumeration)
定義了一種從數據結構中取回連續元素的方式,可以枚舉(一次獲得一個)對象集合中的元素,用在Vector和Properties。
public class EnumerationTester {
public static void main(String args[]) {
Enumeration<String> days;
Vector<String> dayNames = new Vector<String>();
dayNames.add("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
result:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
位集合(BitSet)
實現了一組可以單獨設置和清除的位或標誌,比如:處理一組布爾值。
向量(Vector)
與數組(ArrayList)類似,元素可通過索引訪問,但Vector大小可以動態調整,故創建之初,無需指定大小。
棧(Stack)
後進先出(LIFO)的數據結構,類似於函數嵌套。進棧push,出棧pop,search看堆棧位置,peek出棧不移除,empty判空棧。
字典(Dictionary)
鍵映射到值的數據結構,已過時,可通過Map實現。
哈希表(Hashtable)
在用戶定義鍵結構的基礎上來組織數據。Java 2 重構的Hashtable實現了Map接口,並集成到了集合框架中。它和HashMap類很相似,但是它支持同步。
屬性(Properties)
持久的屬性集,繼承於 Hashtable.Properties類,屬性列表中每個鍵及其對應值都是一個字符串。
Java集合框架
設計目標
- 高性能:基本集合(動態數組,鏈表,樹,哈希表)的實現也必須是高效
- 允許不同類型的集合,以類似的方式工作,具有高度的互操作性
- 擴展和適應性必須簡單
框架介紹
位於java.util包
兩種類型的容器:
- 集合(Collection)
- 圖(Map)
Collection包含:List、Set 、Queue三種主類型,再展開就是: ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等
集合框架是一個用來代表和操縱集合的統一架構,包含如下3點:
- 接口:集合的抽象數據類型,例如:Collection、List、Set、Map 等。
- 實現(類):集合接口的具體實現,例如:ArrayList、LinkedList、HashSet、HashMap等。
- 算法:實現集合接口的對象裏的方法執行的一些有用的集成計算,例如:search、sort等。
接口
Collection 接口
最基本的集合接口,存儲一組不唯一,無序的對象。
List 接口
有序的Collection,能夠精確的控制每個元素插入的位置,能夠通過索引(類似於數組下標)來訪問List中的元素。存儲一組不唯一,有序(插入順序)的對象。
Set 接口
與 Collection 相似的接口,存儲一組唯一,無序的對象。
SortedSet 接口
繼承於Set,存儲一組唯一,有序的對象。
Map 接口
存儲一組鍵值對象。
SortedMap 接口
繼承於 Map,使 Key 保持在升序排列。
實現類
AbstractCollection、AbstractList、AbstractSequentialList
LinkedList、ArrayList
AbstractSet、HashSet、LinkedHashSet、TreeSet
AbstractMap、HashMap、TreeMap、WeakHashMap、LinkedHashMap、IdentityHashMap
Vector、Stack、Dictionary、Hashtable、Properties、BitSet