我刚刚阅读Is there a no-duplicate List implementation out there?关于List
,而不是Set
的实施内容,该实施不允许重复。接受的答案推荐了Collections15 SetUniqueList
。是否有一些相同的东西 - 也许在番石榴? (我搜索了文档但找不到) - 在其他库中还是有其他一些当前流行的解决方案?
答案 0 :(得分:3)
当我有一个不应该有任何重复的Collection时,我喜欢要求正确的Java Semantic,那就是使用Set
接口。也就是说,在许多情况下,为了方便起见,您希望像List
一样保留插入顺序,维护两个并行数据结构似乎浪费并且难以保持同步。这就是我使用这样的东西的原因。 InsertionOrderSet.java这是SortedSet
的一个特殊实现,它使用包装器对象来维护和index
,可以通过比较器对其进行排序,但是隐藏了外部使用者的实现细节,所以它只是看起来像普通的老式保险箱SortedSet
。
答案 1 :(得分:1)
您链接的答案中的内容似乎已经足够了。我会选择其中一种解决方案。或者,您可以简单地扩展类ArrayList
并覆盖在为同一方法调用HashSet
之前对super.method
进行检查的一些方法。只需添加Set as an instance字段,用它来检查dupes并添加/删除添加到列表中/从列表中删除的任何项目。