Java 集合框架_上
集合框架被設計成要滿足以下幾個目標。
-
該框架必須是高性能的。基本集合(動態數組,鏈表,樹,哈希表)的實現也必須是高效的。
-
該框架允許不同類型的集合,以類似的方式工作,具有高度的互操作性。
-
對一個集合的擴展和適應必須是簡單的。
1 Collection
【1】Collection是java集合框架(collection-frame)中的頂層接口。
【2】Collection接口表示一個容器,容器中只能存儲引用數據類型,建議存同一類型的引用類型,方便後續遍歷等操作。
【3】List接口中容器中的元素可以是有序的、可重復的,稱為。
Set接口
特點:
1 集合常用方法
增(add addAll) 刪(clear remove removeAll retainAll) 改:() 查:(contains containsAll isEmpty size)
2 集合的遍歷
Iterable 可遍歷的接口,集合接口繼承於它,集合支持快速遍歷
Collection繼承Iterable接口,表示集合支持快速遍歷
// 快速遍歷 // for-each // Object 表示元素類型// item表示叠代變量 // c1表示集合 for (Object item : c1) { System.out.println(item.toString());
Iterator接口類型,iterator()內部返回一個實現類實現類Iterator接口。這個實現類一定具有hasNext和next方法用於判斷是否有下一個元素和獲取下一個元素。快速遍歷就是基於叠代器工作的。
// 叠代器遍歷(國內) Iterator it = c1.iterator(); while(it.hasNext()) { Object item= it.next(); System.out.println(item.toString()); } // 國外 for(Iterator it2=c1.iterator();it2.hasNext();) { Object item = it2.next(); System.out.println(item.toString()); }
3 List接口
特點:List 接口中的元素時有序的、可重復的。
List基本常用方法
增: add() addAll() add(index,el) addAll(index,collection)
刪: clear() remove() removeAll() remove(index)
改: set(index,el)
查 get(index) indexOf() lastIndexOf()
List接口遍歷
ListIterator 繼承於Iterator,在Iterator的基礎上提供了以正向遍歷集合,也可以以逆序遍歷集合。
hasNext() next ()以正向遍歷
hasPrevious() previous ()以逆序遍歷
// 正向遍歷 ListIterator it2 = list1.listIterator(); while(it2.hasNext()) { System.out.println(it2.next()); } // 逆序遍歷 while(it2.hasPrevious()) { System.out.println(it2.previous());
List接口實現類
ArrayList
【1】是List接口的實現類,底層數據結構是數組,實現大小可變的數組
【2】線程不安全,jdk1.2
【3】默認數組大小是10。自動拓容,拓容原則:newCapacity = oldCapacity + oldCapacity / 2
【4】如果確定序列的元素不在增加,通過調用trimToSize()調制容量至合適的空間
Vector
【1】是List接口的實現類,底層數據結構也是數組,也是大小可變的數組。
【2】是線程安全的,jdk1.0
【3】默認數組大小是10。自動拓容,拓容原則:newCapacity = oldCapacity +capacityIncrement(增長因子)
【4】通過調用trimToSize()調制容量至合適的空間
註意:Vector 在實現List接口的同時,同添加了自身特有的方法xxxElement,未來使用時為了程序的可拓展性
LinkedList
【1】是List接口的實現類,底層數據結構是鏈表。
【2】線程不安全。
【3】push入棧操作 / pop出棧操作
【4】隊列(Queue)接口add 入棧操作 remove出棧操作 element() 獲取表頭元素 可能會出現NoSuchElementException異常
【5】隊列(Queue)接口offer入棧操作poll出棧操作peek()獲取表頭元素 可能會返回特殊值(null)
【6】雙向隊列(Deque)接口
Java 集合框架_上