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。如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。要...