java中的集合的區別
Java集合分為value,key------value(conllection map)兩大部分
1.儲存值的(value)有list和set
1.1 list是有序的,可以重複的。list又分為ArrayList和LinkedList
1.1.1 ArrayList:底層原始碼中用的是陣列,根據陣列的特性,ArrayList對於查詢操作效率高,對於插入/刪除操作效率低 (陣列在記憶體中是連續的,插入或刪除時需要移動記憶體,但查詢可以根據索引查詢)
1.1.2 LinkedList:底層原始碼中用的是連結串列,根據連結串列的特性,LinkedList對於插入/刪除操作效率高,對於查詢操作效率低 (連結串列在記憶體中是不連續的,插入或刪除時不需要移動記憶體,但查詢時需要從第一個開始尋找)
因此ArrayList用於查詢比較多插入或刪除較少的情況下,LinkedList用於查詢比較少插入或刪除較多的情況下,一般用 ArrayList情況比較多。
1.2 set是無序的,不可重複的。不可重複根據equals和hascode判斷,即用set儲存值時必須從寫equals和hascode方法。
2.儲存key------value的是map
map分為hashmap和hastable
hashmap允許key或value為null,而hastable不可以的
hashmap是執行緒不安全的,效率較高
hashtable是執行緒安全的,效率較低
如果想執行緒安全並且效率高需要使用ConcurrentHashMap(jdk1.5後執行緒併發庫中提供的),就是把整個map分成n個( 類似hashtable),每個map都是執行緒安全的,且可以實現併發,並且效率提高n唄,預設n=16.