[英]List backed up by a HashSet
我需要按照添加順序將對象存儲在集合中,這就是為什么我需要List
的原因。 但是,該列表不應包含重復項。 我還需要快速確定集合中是否已存在對象。 與其每次都迭代該列表,不如擁有一個HashSet
會更好。 我可以快速查找和添加元素,並保留插入順序。
問題是-我應該:
通過添加HashSet字段來擴展ArrayList?
實現Java集合接口之一(列表或集合)?
只需創建一個具有兩個字段的新類-ArrayList和HashSet?
第一個選項有一個缺點-我不需要所有的ArrayList方法,因此我必須重寫所有方法,以便我的類的用戶不會調用只會使事情搞砸的基類方法(例如,則可以從列表中刪除一個對象,但該對象仍將存在於集合中)。 而且沒有辦法刪除基類方法(除非覆蓋它並引發異常)。
同樣,對於2,我真的必須實現接口的所有方法。
第三個選項對我來說似乎是最好的,但是它使代碼實現依賴於代碼,因為我的類沒有實現任何接口。
在這種情況下我該怎么辦? 我想擁有List
接口具有的所有add
方法。 -LinkedHashSet不是一個選項 。
您可以使用LinkedHashSet ,它是一個Set實現,可確保迭代順序與添加元素的順序相同。
Set接口的哈希表和鏈表實現,具有可預測的迭代順序。 ...此鏈表定義了迭代順序,即將元素插入到集合中的順序(插入順序) 。
無需自己執行任何操作。 使用LinkedHashSet維護相遇順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.