首頁  >  文章  >  Java  >  Java中Set與List的關係與區別介紹

Java中Set與List的關係與區別介紹

高洛峰
高洛峰原創
2017-01-22 15:25:031904瀏覽

兩個介面都是繼承自Collection.

List (inteface)

次序是List 的最重要特點,它確保維護元素特定的順序. 
——ArrayList 允許對元素快速隨機存取.Link 
對順序存取進行最佳化,向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().

更多Java中Set與List的關係與區別介紹相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn