隨筆1 List和Set的區別

2021-09-26 20:16:37 字數 1600 閱讀 6428

list介面繼承自collection介面,因此也繼承了collection集合中的所有方法。所有已知的實現類有:abstractlist、abstractsequencelist、arraylist、attributelist、copyonwritearraylist , linkedlist , rolelist , roleunresolvedlist , stack , vector,其中比較常見的是arraylist、linkedlist、vector等。

同list介面一樣,set介面也是繼承自collection,所有已知的實現類有:abstractset , concurrenthashmap.keysetview , concurrentskiplistset , copyonwritearrayset , enumset , hashset , jobstatereasons , linkedhashset , treeset,其中比較常見的是hashset 、linkedhashset、treeset

list是有序集合,輸入的順序就是輸出的順序;set是無序集合,無法保證每個元素的儲存順序(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的)。

list的元素是可重複,可以存在多個null值;set是不可重複的,只能有乙個null值。

list的元素有下標,因此可以精確的控制元素的插入位置,也能以此去查詢元素,所以查詢效率比較高,但是插入刪除元素時需要依次改變元素的位置,所以效率相對比較低;set的元素沒有固定的位置,因此查詢元素的效率比較低,但是相對的插入刪除元素時並不會使元素位置發生變化,所以插入刪除效率比較高。

list可以用for迴圈也可以用迭代器,set只能使用迭代器迴圈,因為set沒有下標,也就沒有get(index)方法。

set的判斷元素是否重複是通過比較該元素的hashcode決定的,因此set中的object必須重寫equals和hashcode方法。

public class test1 

setset = new hashset<>();

set.add("1元素");//set的元素是無序,根據hashcode確定其位置,hashcode不變,則位置不會發生改變

set.add("2元素");

set.add("3元素");

set.add("1元素");//set的元素不可重複,通過hashcode值判斷兩者是否相同

set.add("2元素");

set.add("3元素");

set.add(null);//set只能儲存乙個null值

set.add(null);

iteratoriterator = set.iterator();

while (iterator.hasnext()) }}

list是有序的、可重複的集合,適用於查詢比較多的場景下;而set是無序的、不可重複的集合,適用於增刪比較多的場景下,同時也可以用於去重。

list和set的區別

集合list作為佇列來使用,先存入的資料會被先取出 listlist new arraylist list.add 1 list.add 2 list.add 3 取出來的結果為 1,2,3 集合set作為堆疊來使用,先存入的資料會後取出 setset new hashset set.add 1 s...

list和set的區別

list的特點 list元素有放入順序,且是可以重複的。public class listtest for string str list iteratorit list.iterator while it.hasnext set的特點 set是無放入順序的,且不能重複的。set取值不能使用普通fo...

list和set的區別

1 定義 list 列表,表達形式 或者list 有序,通過索引值進行查詢 set 集合,表達形式set 無序自動去重 2 常見應用方法 list 依據索引值,進行內部的增刪改查作業 set 集合的交集,並集,差集 myset a set 1,2,3,4,5 print type myset a s...