天天看點

Java資料結構 List Map Set Collection Collections集合Collection接口集set清單List映射表MapCollections類用于同步集合,還能改變集合隻讀方式的類Collection與Collectiions的差別

集合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是針對集合類的一個幫助類,他提供一系列靜态方法實作對各種集合的搜尋、排序、線程安全化等操作。