總結 Java集合之間的區別

2021-09-11 22:57:21 字數 3749 閱讀 6759

1、集合中包含以下:

collection介面:

list介面:

set介面:

queue介面:

arrays陣列:

map介面:

2、collection介面:

2-1:有以下方法:

名稱作用

size()

返回集合中的項數

isempty()

判斷集合是否為空

contains(object)

contains(object)

clear()

清除add(e)

從集合中新增某項

remove(object)

從集合中刪除某項

iterator()

遍歷集合

2-2:collection 繼承 iterable介面

2-2-1:實現iterable介面的類可以擁有增強for迴圈

2-2-2:集合類必須提供乙個名為iterable()的方法,該方法的返回值為iterator

2-3:iterator方法名稱

作用hashnext()

是否存在下一項

next()

獲取下一項

remove()

該方法可以生成由next()最新返回的項(注意:此後不能呼叫remove,直到next再一次呼叫以後)

2-4:collection介面的remove()和iterator介面的remove()方法的區別?

collection 的remove()

iterator的remove()

單鏈表查詢效率低

結合next()方法使用,效率更高

會報錯,concurremmodificationexception,集合物件個數改變而iterator內部物件個數不變

不會報錯,內部物件個數和原來集合物件個數一樣

3、list介面:

特點:

可以新增重複的元素

有順序 的

3-1: arraylist與linkedlist 區別?

arraylist

linkedlist

陣列結構

鍊錶結構

優點get和set呼叫花費常數時間,查詢速度快

新項插入和現有項插入的刪除開銷很小

缺點新項插入和現有項插入的刪除代價昂貴,,除非是在末端進行

對get和set呼叫昂貴

4、set介面:

特點:

不儲存重複的元素

沒有順序

4-1:hashset:

優點:速度最快,沒有明顯的順序儲存元素

缺點:集合元素可以為null,但是只能放入乙個null。

4-2:treeset:

按照比較結果的公升序儲存物件

4-3:linkedhashset:

按照被新增的順序儲存物件

4-4:hashset、treeset、linkedhashset區別?

①:需要速度快的集合-----> hashset

②:需要集合有排序功能 ------->treeset

③:需要按照插入順序儲存集合------>linkedhashset

5、map介面:

5-1:hashmap:

優點:訪問速度最快。無順序儲存元素

5-2:treemap

按照比較結果的公升序儲存鍵

5-3:linkedhashmap:

優點:有順序的,查詢速度快(保留了hashmap的查詢速度)

5-4:hashmap、treemap、linkedhashmap區別?

①.在map中插入、刪除和定位元素,hashmap是最好的選擇

②.需要集合有排序功能,使用treemap更好

③.需要按照插入的順序儲存集合,使用linkedhashmap

6、array和arraylist的區別?

arralylist是array的複雜版本

array

arraylist

arrays是陣列

arralylist是集合

只能儲存相同資料型別

儲存不同資料型別

長度是固定

長度是可變

6-1:關於arraylist 容量問題

arraylist 是實現list 介面的動態陣列,即它的容量大小是可變的。允許包括null 在內的所欲元素。

每個arraylist 例項都有乙個容量,該容量是指用來儲存列表元素的陣列的大小。預設初始容量為10.

隨著arraylist 中元素的增加,它的容量會不端的自動增長。在每次新增新的元素時,arraylist 都會檢查是否需要進行擴容操作,擴容操作帶來資料向新陣列的重新拷貝。所以,如果已知業務資料量,在構造arraylist 時可以 指定乙個初始容量,這樣會減少擴容時資料的拷貝問題。當然在新增大量元素前,應用程式也可以使用ensurecapacity操作來增加arraylist例項的容量,這可以減少遞增式再分配的數量。

具體可以查閱 arraylist 的原始碼

ensurecapacity(),該方法就是arraylist的擴容方法。而每次擴容的容量計算方式

//計算新的容量大小,為當前容量的1.5倍

int newcapacity = (oldcapacity * 3) / 2 + 1;

7、hashmap與hashset區別?

hashmap

hashset

實現了map介面

實現了set介面

儲存鍵值對

儲存物件

呼叫put()向map中新增元素

呼叫add()向set中新增元素

hashmap使用key計算hashcode

hashset使用成員物件計算hashcode

hashmap相對於hashset較快,因為它是使用唯一的鍵獲取物件

hashset較hashmap來說比較慢

8、list、set、map之間的區別

list

setmap

可以允許重複的元素

不允許重複元素

鍵值對儲存,鍵必須唯一,但是值可以重複

可以插入多個null元素

只允許乙個null元素

鍵只允許乙個null,

值可以允許有多個null

有序的容器,插入的順序和輸出的順序一樣

無序容器

無序容器

9、queue 通道、佇列:

佇列與堆疊的區別?

佇列堆疊

先進先出

先進後出

10:queue、message、looper、handler之間的關係

11、總結:

結合這張思維導圖,結構一目了然!

集合之間區別

arraylist 預設初始容量10 載入因子 1 擴容1.5倍 底層資料結構是陣列結構 執行緒不安全,效率高 hashmap 預設初始容量是16 2的n次方 載入因子0.75 擴容2倍 若有設定初始容量,則使用大於此初始容量的最小2的冪。執行緒不安全,效率高 支援key跟value為null ha...

各集合之間的區別

1.list 特點 可以新增重複的元素,有順序 list有兩個子類 1 arraylist 優點 get和set呼叫花費常數時間 缺點 新項的插入和現有項的刪除 代價昂貴,除非是在末端進行 2 linkedlist 優點 新項的插入和現有的項的刪除開銷小 缺點 對get和呼叫昂貴2.set 特點 不...

JAVA 集合總結

如果涉及到堆疊,佇列等操作,應該考慮用list,對於需要快速插入,刪除元素,應該使用linkedlist,如果需要快速隨機訪問元素,應該使用arraylist。如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。要...