集合的繼承體系

2021-08-30 21:39:55 字數 1670 閱讀 8340

collection下面有兩個常用的子類介面,乙個是list(有序存放可重複的元素),set(存放不可重複的元素).

list介面下有三個常用的子類

arraylist:底層結構是陣列,查詢快,增刪慢,執行緒不安全,效率高

vector:底層結構是陣列,查詢和增刪慢,執行緒安全,效率低(在多執行緒環境中選用)

arraylist和vector都有乙個初始化的容量的大小,當裡面儲存的元素超過這個大小時就需要動態地擴充它們的空間.vector預設擴充為原來的兩倍(每次擴充空間的大小是可以通過方法控制的),arraylist預設擴充為原來的1.5倍(沒有提供api擴充空間)

linkedlist:,底層結構是雙向鍊錶,查詢慢,增刪快,執行緒不安全,效率高

set下有兩個常用的子類(集合中的元素不能重複)

乙個是hashset乙個是treeset,其中最常用的是hashset,

保證hashset集合元素的唯一,其實就是根據物件的hashcode和equals方法來決定的。如果我們往集合中存放自定義的物件,那麼保證其唯一,就必須複寫hashcode和equals方法建立屬於當前物件的比較方式。hashset下面有乙個子類linkedhashset,它是鍊錶和雜湊表組合的乙個資料儲存結構

.它可以存放有序不可重複的元素.其中treeset實現了sortedset介面,因此treeset存放的元素是有序且不能重複的

與collection集合繼承體系存放單列資料不同的是 ,

map儲存鍵和值這樣的雙列資料的集合

鍵是無序且不能重複的,而且資料結構都是針對於鍵

,它的值是可以有重複的。

它下面有三個常用的實現類,乙個是hashmap(基於雜湊表實現的,根據鍵的hashcode值來儲存元素,根據鍵直接獲取它的值,訪問速度很快)乙個是hashtable,還有乙個treemap(基於紅黑樹實現的,具有某一種平衡性的搜尋二叉樹,可以提供一些hashmap所提供不了的方法,如lastkey(),即樹中最後乙個元素,key為最大值;又如ceilingkey(13),得到最小的比13大的key,其中對應的還有firstkey()和floorkey(13)

hashmap()的增刪改查都是o(n),但是它要想實現treemap的lastkey和ceilingkey的功能其代價都是o(lgn)

treemap的增刪改查以及lastkey和ceilingkey的代價都是o(lgn) )

hashmap執行緒不安全,效率高,允許空鍵和空值(最多隻允許一條記錄的鍵為null)

hashtable執行緒安全,效率低,不允許空鍵和空值

hashtable和hashmap採用的hash演算法幾乎一樣,所以效能不會有很大的差異.在hashtable中,hash陣列的預設大小是11,增加的方式是old*2+1.在hashmap中,hash陣列的預設大小是16,而且一定是2的指數

treemap實現了sortmap介面,能夠把它儲存的記錄根據鍵排序,因此取出來的排序後的鍵值對

linkedhashmap是hashmap的乙個子類,有序不可重複

在hashtable中,同步指什麼?

同步意味著在乙個時間點只能有乙個執行緒可以修改hash表,任何執行緒在執行hashtable的更新操作前都需要獲取鎖物件,其他執行緒則等待鎖的釋放

如何實現hashmap的同步?

hashmap可以通過map m=collections.synchronizedmap(new hashmap()),來達到同步的效果

集合繼承體系的物件導向思想

l 介面 用來明確所有集合中該具有的功能,相當於在定義集合功能標準 l 抽象類 把多個集合中功能實現方式相同的方法,抽取到抽象類實現,具體集合不再遍寫,繼承使用即可 具體類 繼承抽象類,實現介面,重寫所有抽象方法,達到具備指定功能的集合。每個具體集合類,根據自身的資料儲存結構方式,對介面中的功能方法...

集合框架的體系

最基本的集合介面。遍歷collection集合 呼叫iterator 的方法,返回迭代子,可由迭代子直接訪問每個元素,如下 iterator it collection.iterator 獲得乙個迭代子 while it.hasnext 繼承collection的介面主要有 list,set。繼承自...

IO繼承體系

io繼承體系 reader bufferedreader reader in 輸入緩衝流 linenumberreader reader in getlinenumber setlinenumber inputstreamreader inputstream in,string charsetnam...