列表没有重复?

时间:2011-11-01 00:40:11

标签: java list collections

我刚刚阅读Is there a no-duplicate List implementation out there?关于List,而不是Set的实施内容,该实施不允许重复。接受的答案推荐了Collections15 SetUniqueList。是否有一些相同的东西 - 也许在番石榴? (我搜索了文档但找不到) - 在其他库中还是有其他一些当前流行的解决方案?

2 个答案:

答案 0 :(得分:3)

当我有一个不应该有任何重复的Collection时,我喜欢要求正确的Java Semantic,那就是使用Set接口。也就是说,在许多情况下,为了方便起见,您希望像List一样保留插入顺序,维护两个并行数据结构似乎浪费并且难以保持同步。这就是我使用这样的东西的原因。 InsertionOrderSet.java这是SortedSet的一个特殊实现,它使用包装器对象来维护和index,可以通过比较器对其进行排序,但是隐藏了外部使用者的实现细节,所以它只是看起来像普通的老式保险箱SortedSet

答案 1 :(得分:1)

您链接的答案中的内容似乎已经足够了。我会选择其中一种解决方案。或者,您可以简单地扩展类ArrayList并覆盖在为同一方法调用HashSet之前对super.method进行检查的一些方法。只需添加Set as an instance字段,用它来检查dupes并添加/删除添加到列表中/从列表中删除的任何项目。