Java 中的 Collection 學習筆記(1)

Collection 來自與java.util包,是java中數據結構的封裝的包。java

 

collection主要方法:

boolean add(Object o)添加對象到集合
boolean remove(Object o)刪除指定的對象
int size()返回當前集合中元素的數量
boolean contains(Object o)查找集合中是否有指定的對象
boolean isEmpty()判斷集合是否爲空
Iterator iterator()返回一個迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中的元素
boolean addAll(Collection c)將集合c中全部的元素添加給該集合
void clear()刪除集合中全部元素
void removeAll(Collection c)從集合中刪除c集合中也有的元素
void retainAll(Collection c)從集合中刪除集合c中不包含的元素算法

大體講解java集合的體系結構
List、Set、Map是這個集合體系中最主要的三個接口。數組


其中List和Set繼承自Collection接口。
Set不容許元素重複。HashSet和TreeSet是兩個主要的實現類。
List有序且容許元素重複。ArrayList、LinkedList和Vector是三個主要的實現類。
Map也屬於集合系統,但和Collection接口不一樣。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,可是value能夠重複。        HashMap、TreeMap和Hashtable是三個主要的實現類。
SortedSet和SortedMap接口對元素按指定規則排序,SortedMap是對key列進行排序。數據結構

  • List接口對Collection進行了簡單的擴充,它的具體實現類經常使用的有ArrayList和LinkedList。你能夠將任何東西放到一個List容器中,並在須要時從中取出。ArrayList從其命名中能夠看出它是一種相似數組的形式進行存儲,所以它的隨機訪問速度極快,而LinkedList的內部實現是鏈表,它適合於在鏈表中間須要頻繁進行插入和刪除操做。在具體應用時能夠根據須要自由選擇。前面說的Iterator只能對容器進行向前遍歷,而ListIterator則繼承了Iterator的思想,並提供了對List進行雙向遍歷的方法。

 

  • Set接口也是Collection的一種擴展,而與List不一樣的時,在Set中的對象元素不能重複,也就是說你不能把一樣的東西兩次放入同一個Set容器中。它的經常使用具體實現有HashSet和TreeSet類。HashSet能快速定位一個元素,可是你放到HashSet中的對象須要實現hashCode()方法,它使用了前面說過的哈希碼的算法。而TreeSet則將放入其中的元素按序存放,這就要求你放入其中的對象是可排序的,這就用到了集合框架提供的另外兩個實用類Comparable和Comparator。一個類是可排序的,它就應該實現Comparable接口。有時多個類具備相同的排序算法,那就不須要在每分別重複定義相同的排序算法,只要實現Comparator接口便可。集合框架中還有兩個很實用的公用類:Collections和Arrays。Collections提供了對一個Collection容器進行諸如排序、複製、查找和填充等一些很是有用的方法,Arrays則是對一個數組進行相似的操做。

 

  • Map是一種把鍵對象和值對象進行關聯的容器,而一個值對象又能夠是一個Map,依次類推,這樣就可造成一個多級映射。對於鍵對象來講,像Set同樣,一個Map容器中的鍵對象不容許重複,這是爲了保持查找結果的一致性;若是有兩個鍵對象同樣,那你想獲得那個鍵對象所對應的值對象時就有問題了,可能你獲得的並非你想的那個值對象,結果會形成混亂,因此鍵的惟一性很重要,也是符合集合的性質的。固然在使用過程當中,某個鍵所對應的值對象可能會發生變化,這時會按照最後一次修改的值對象與鍵對應。對於值對象則沒有惟一性的要求。你能夠將任意多個鍵都映射到一個值對象上,這不會發生任何問題(不過對你的使用卻可能會形成不便,你不知道你獲得的究竟是那一個鍵所對應的值對象)。Map有兩種比較經常使用的實現:HashMap和TreeMap。HashMap也用到了哈希碼的算法,以便快速查找一個鍵,TreeMap則是對鍵按序存放,所以它便有一些擴展的方法,好比firstKey(),lastKey()等,你還能夠從TreeMap中指定一個範圍以取得其子Map。鍵和值的關聯很簡單,用pub(Object key,Object value)方法便可將一個鍵與一個值對象相關聯。用get(Object key)可獲得與此key對象所對應的值對象。
相關文章
相關標籤/搜索