前言
java語言郭计,博大精深啊辨图,好好擼一擼JAVA編程思想
目錄
- 對比1: 是否實現Collection
- 對比2:List 和Set對比
- 對比3:ArrayList與LinkedList
- 對比4:HashSet與Treeset
- Collection接口的方法
- iterator()方法
對比1: 是否實現Collection
類型 | 是否實現Collection |
---|---|
Map | NO |
List | YES |
set | YES |
對比2:List 和Set對比
類型 | 元素可重復 | 是否有序 | 檢索元素效率 | 刪除和插入效率 |
---|---|---|---|---|
List | YES | YES | 高 | 低 |
set | NO | NO | 低 | 高 |
- Set:插入和刪除不會引起元素位置改變膘婶。
- List:和數組類似,List可以動態(tài)增長会放,因為會引起其他元素位置改變顷蟆。
對比3:ArrayList與LinkedList
類型 | 查詢效率 | 插入和刪除操作效率 |
---|---|---|
Arraylist | 高 | 低 |
LinkedList | 低 | 高 |
- ArrayList是實現了基于動態(tài)數組的數據結構,因為地址連續(xù)诫隅,一旦數據存儲好了,查詢操作效率會比較高(在內存里是連著放的)帐偎。因為地址連續(xù)阎肝, ArrayList要移動數據,所以插入和刪除操作效率比較低。
- LinkedList基于鏈表的數據結構,地址是任意的肮街,所以在開辟內存空間的時候不需要等一個連續(xù)的地址,對于新增和刪除操作add和remove判导,LinedList比較占優(yōu)勢嫉父。LinkedList 適用于要頭尾操作或插入指定位置的場景,因為LinkedList要移動指針,所以查詢操作性能比較低眼刃。
對比4:HashSet與Treeset
類型 | 算法 | 是否可以存放null | 適用場景 |
---|---|---|---|
HashSet | 哈希表 | 不允許 | 適用于Map中插入绕辖、刪除和定位元素 |
Treeset | 二差樹 | 只能放入一個null | 適用于按自然順序或自定義順序遍歷鍵(key)。 |
Collection接口的方法
方法 | 說明 |
---|---|
boolean add(Object o) | 向集合中加入一個對象的引用 |
void clear() | 刪除集合中所有的對象擂红,即不再持有這些對象的引用 |
boolean isEmpty() | 判斷集合是否為空 |
boolean contains(Object o) | 判斷集合中是否持有特定對象的引用 |
Iterartor iterator() | 返回一個Iterator對象仪际,可以用來遍歷集合中的元素 |
boolean remove(Object o) | 從集合中刪除一個對象的引用 |
int size() | 返回集合中元素的數目 |
Object[] toArray() | 返回一個數組,該數組中包括集合中的所有元素 |
Collection沒有get()方法來取得某個元素。只能通過iterator()遍歷元素树碱。
方法 | 說明 |
---|---|
hasNext() | 判斷集合中元素是否遍歷完畢肯适,如果沒有,就返回true |
next() | 返回下一個元素 |
remove() | 從集合中刪除上一個有next()方法返回的元素成榜。 |