天天看點

JAVA程式設計思想讀書筆記(二)--容器

接上篇JAVA程式設計思想讀書筆記(一)

第八章.對象的容納

No1:

java提供了四種類型的集合類:Vector(矢量)、BitSet(位集)、Stack(堆棧)、Hashtable(散清單)

No2:

為什麼不能将基本資料類型置入集合裡?

首先,集合的存在就是為了友善對多個對象的操作才出現的,集合是存儲對象最常用的一種方式,也就是說,集合的從有到無都是因為對象,人們發現要儲存多個對象很麻煩,于是便發明了集合,集合是依賴對象而生的,是以就對基本資料類型"不感興趣",但是,現在基本資料類型都有了其對應的封裝的對象,而且有了自動拆箱和裝箱功能,基本資料類型和其對應對象之間的轉換變得很友善,想把基本資料類型存入集合中,直接存就可以了,系統會自動将其裝箱成封裝類然後加入集合當中

No3:

Set(接口)添加到Set的每個元素都必須是獨一無二的;否則Set就不會添加重複的元素。添加到Set裡的對象必須定義equals(),進而建立對象的唯一性。Set擁有與Collection完全相同的接口。一個Set不能保證自己可按任何特定的順序維持自己的元素

HashSet用于除非常小的以外的所有Set。對象也必須定義hashCode()

ArraySet由一個數組後推得到的Set。面向非常小的Set設計,特别是那些需要頻繁建立和删除的。對于小Set,與HashSet相比,ArraySet建立和反複所需付出的代價都要小得多。但随着Set的增大,它的性能也會大打折扣。不需要HashCode()

TreeSet由一個“紅黑樹”後推得到的順序Set。這樣一來,我們就可以從一個Set裡得到一個順序集合

No4:

Map(接口)維持“鍵-值”對應關系(對),以便通過一個鍵查找對應的值

HashMap基于一個散清單實作(用它代替HashTable)針對“鍵-值”對的插入和檢索,這種形式具有最穩定的性能。可通過建構器對這一性能進行調整,以便設定散清單的“能力”和“裝載因子”

ArrayMap由一個ArrayList後推得到的Map。對反複的順序提供了精确的控制。面向非常小的Map設計,特别是那些需要經常建立和删除的。對于非常小的Map,建立和反複所付出的代價要比HashMap低得多。但在Map變大以後,性能也會相應的大幅度降低

TreeMap在一個“紅-黑”樹的基礎上實作。檢視鍵或者“鍵-值”對時,它們會按固定的順序排列(取決于Comparable或Comparator)TreeMap最大的好處就是我們得到的是已排好序的結果。TreeMap是含有subMap()方法的位移一種Map,利用它可以傳回樹的一部分

繼續閱讀