集合Collection接口
--Collection 是任何對象組,元素各自獨立,通常擁有相同的套用規則。Set List由它派生。
基本操作 增加元素add(Object obj); addAll(Collection c);
删除元素 remove(Object obj); removeAll(Collection c);
求交集 retainAll(Collection c);
通路/周遊集合元素的好辦法是使用Iterator接口(疊代器用于取代Enumeration)
Public interface Iterator{
Public Boolean hasNext();
Public Object next();
Public void remove();
}
集set
--沒有重複項目的集合
有三種特定類型的集可用
HashSet-基于散清單的集,加進散清單的元素要實作hashCode()方法
LinkedHashSet-對集疊代時,按增加順序傳回元素
TreeSet-基于(平衡)樹的資料結構
清單List
--位置性集合。加進清單的元素可以加在清單中特定位置或加到末尾
有兩個特定版本
ArrayList(數組表)-類似于Vector,都用于縮放數組維護集合。差別:
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程式不安全的,不是同步的
二.資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半
LinkedList(連結清單)-是雙向連結清單,每個節點都有兩個指針指向上一節點和下一節點。
用在FIFO,用addList()加入元素 removeFirst()删除元素
用在FILO,用addFirst()/removeLast()
ListIterator提供雙向周遊next() previous(),可删除、替換、增加元素
映射表Map
--用于關鍵字/數值對,像個Dictionary
處理Map的三種集合
關鍵字集KeySet()
數值集value()
項目集enrySet()
四個具體版本
HashMap-散清單的通用映射表
LinkedHashMap-擴充HashMap,對傳回集合疊代時,維護插入順序
WeakHashMap-基于弱引用散清單的映射表,如果不保持映射表外的關鍵字的引用,則記憶體回收程式會回收它
TreeMap-基于平衡樹的映射表
Collections類
用于同步集合,還能改變集合隻讀方式的類
import java.util.*;
public class Test {
public static void main(String[] args) {
// 下面程式建立了四個同步的集合對象
Collection<String> c = Collections.synchronizedCollection(new ArrayList<String>());
List<String> list = Collections.synchronizedList(new ArrayList<String>());
Set<String> s = Collections.synchronizedSet(new HashSet<String>());
Map<String, Integer> m = Collections.synchronizedMap(new HashMap<String, Integer>());
}
}
Collection與Collectiions的差別
Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜态方法實作對各種集合的搜尋、排序、線程安全化等操作。