簡體   English   中英

由HashSet備份的列表

[英]List backed up by a HashSet

我需要按照添加順序將對象存儲在集合中,這就是為什么我需要List的原因。 但是,該列表不應包含重復項。 我還需要快速確定集合中是否已存在對象。 與其每次都迭代該列表,不如擁有一個HashSet會更好。 我可以快速查找和添加元素,並保留插入順序。

問題是-我應該:

  1. 通過添加HashSet字段來擴展ArrayList?

  2. 實現Java集合接口之一(列表或集合)?

  3. 只需創建一個具有兩個字段的新類-ArrayList和HashSet?

第一個選項有一個缺點-我不需要所有的ArrayList方法,因此我必須重寫所有方法,以便我的類的用戶不會調用只會使事情搞砸的基類方法(例如,則可以從列表中刪除一個對象,但該對象仍將存在於集合中)。 而且沒有辦法刪除基類方法(除非覆蓋它並引發異常)。

同樣,對於2,我真的必須實現接口的所有方法。

第三個選項對我來說似乎是最好的,但是它使代碼實現依賴於代碼,因為我的類沒有實現任何接口。

在這種情況下我該怎么辦? 我想擁有List接口具有的所有add方法。 -LinkedHashSet不是一個選項

您可以使用LinkedHashSet ,它是一個Set實現,可確保迭代順序與添加元素的順序相同。

Set接口的哈希表和鏈表實現,具有可預測的迭代順序。 ...此鏈表定義了迭代順序,即將元素插入到集合中的順序(插入順序)

無需自己執行任何操作。 使用LinkedHashSet維護相遇順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM