List,Set和Map三種集合

2021-10-08 01:34:18 字數 1939 閱讀 3186

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 介面...