Set和List 的關係與區別

2021-05-21 18:38:37 字數 765 閱讀 5143

兩個介面都是繼承自collection.

list (inteface)

次序是list 的最重要特點,它確保維護元素特定的順序.

--arraylist 允許對元素快速隨機訪問.

--linkedlist 對順序訪問進行優化,向list 中間插入與移除的開銷並不大,具有addfrist(),addlast(),getfirst,getlast,removefirst和removelast().這些方法使得linkedlist可當作堆疊/佇列/雙向佇列.

set (inteface)

存入set 的每個元素必須唯一,不保證維護元素的次序.加入set 的object必須定義equals()方法

--hashset 為快速查詢而設計的set ,存入hashset物件必須定義hashcode().

--treeset  保護次序的set ,使用它可以從set 中提取有序序列.

--linkedhashset  具有hashset的查詢速度,且內部使用鍊錶維護元素的次序.

它們之間的儲存方式不一樣:

treeset採用紅黑樹的樹據結構排序元素.

hashset採用雜湊函式,這是專門為快速查詢而設計的.

linkedhashset內部使用雜湊以加快查詢速度,同時使用鍊錶維護元素的次序.

使用hashset/treeset時,必須為類定義equals();而hashcode()是針對hashset,作為一種程式設計風格,當覆蓋equals()的時候,就應該同時覆蓋hashcode().

Set和List 的關係與區別

兩個介面都是繼承自collection.list inteface 次序是list 的最重要特點,它確保維護元素特定的順序.arraylist 允許對元素快速隨機訪問.linkedlist 對順序訪問進行優化,向 list 中間插入與移除的開銷並不大,具有addfrist addlast getfi...

Set和List 的關係與區別

兩個介面都是繼承自collection.list inteface 次序是list 的最重要特點,它確保維護元素特定的順序.arraylist 允許對元素快速隨機訪問.linkedlist 對順序訪問進行優化,向 list 中間插入與移除的開銷並不大,具有addfrist addlast getfi...

List與Set的關係和區別

list和set是用來存放集合的介面,並且二者都繼承自介面collection。1 在list中的元素存放是有序的,可以存放重複的元素,檢索效率較高,插入刪除效率較低。arraylist linkedlist vector是list的兩個實現類。arraylist 底層的實現就是乙個可變陣列非同步實...