list是從collection繼承過來,也是乙個介面;list是乙個有序集合:內部的元素儲存可以按照規定的順序儲存,可以通過索引獲取指定位置的元素;新增方法:
從名字可以看是時list介面的實現類,arraylist是基於物件陣列的實現,初始容量為10
當new出來時還無初始容量,當執行第乙個add方法時容量就變成10.之後沒當容量超出時,會擴容為原來的1.5倍(內部時位運算的實現)
linkedlist是基於鍊錶的list實現,元素之間通過首尾指標連線,在進行修改(增加,刪除)時只需要修改元素的首尾指標即可,修改效率要比arraylist高,但是在查詢時,由於linkedlist沒有像arraylist的索引,在查詢時需要從鍊錶的第乙個元素開始依次向搜尋,所以查詢效率較低。
相比list集合來說,set集合內部儲存的資料不是按照新增順序儲存,內部不允許出現重複的元素(不允許出現e1.equals(e2)),對null也只允許出現乙個,對於set集合常用的實現主要有以下:
hashset是針對於set集合的實現,內部基於hashmap的實現,在進行元素儲存時,會對每乙個儲存的元素進行hash(),獲取乙個雜湊位址,通過該hash位址可以找到物件在記憶體的位置,因此儲存方式跟具體得出的hash值有關係,因此儲存順序可能會跟新增順序不一致。
public
class
setdemo
}//獲取set集合的迭代器
iterator
it = set.
iterator()
;while
(it.
hasnext()
)}system.out.
println
(set)
;//根據提供的collection物件構建乙個hashset
setset2 =
newhashset
<
>
(list)
; system.out.
println
(set2);}
}
treeset集合是基於treemap的set集合實現,內部元素的儲存根據元素的自然順序(儲存的元素需要實現comparable介面)排序;由於元素是自然順序排序的實現,因此需要保證集合內部儲存的元素必須都是相同的資料型別。
map也稱之為對映,內部的元素是以鍵值對為結構儲存,可以通過key獲取map中的value;key不允許重複;但是值是可以重複的,map集合有一些常見的實現:
hashmap是map集合乙個實現,內部是基於雜湊表的排序實現元素儲存的,實現原理是鍊錶+陣列(jdk8之後引入紅黑樹)
public
class
hashmapdemo
// 獲取map集合的鍵集
setkeys = user.
keyset()
;for
(string k : keys)
//移除指定鍵對應的元素
user.
remove
("id");
//修改指定鍵對應的值
user.
replace
("name"
,"隔壁老王");
system.out.
println
(user)
;//獲取集合中元素的個數
system.out.
println
(user.
size()
);}}
treemap的實現是基於二叉排序樹中的紅黑樹實現,所儲存的元素要求鍵必須是同一種資料型別,並且有實現過comparable介面(或者建立treemap時指定排序比較器)
hashmap是基於hash演算法的實現,內不通過陣列結合鍊錶實現,允許空鍵值存在,是執行緒不同步的實現
treemap是基於紅黑樹的實現,內部元素的儲存順序是由自然順序對鍵進行排序之後儲存,是執行緒不同步的實現
List Set和Map介面遍歷方法
一 list集合 public class test 2 加強for迴圈遍歷 for string name list 3 迭代器遍歷 iteratoriterator list.iterator while iterator.hasnext 二 set集合 public class test 2 ...
Map的三種遍歷方法
最常規的一種遍歷方法,最常規就是最常用的,雖然不複雜,但很重要,這是我們最熟悉的。public static void work mapmap 利用keyset進行遍歷,它的優點在於可以根據你所想要的key值得到你想要的values,更具靈活性!public static void workbyke...
Map的三種 遍歷方式
map中沒有迭代器 不能直接迭代 遍歷 set keyset 這個方法 是 把map中的所有鍵 key 取出 放入乙個set集合中 返回給你 v get object key 是通過傳入鍵key 返回的是 鍵key 對應value值 inte ce intera test類 去實現interb 介面...