那里有没有重复的 List 实现吗?

新手上路,请多包涵

我知道 SortedSet ,但在我的情况下,我需要一些实现 List 的东西,而不是 Set 。那么在 API 或其他地方是否有实现?

自己实施应该不难,但我想为什么不先问问这里的人呢?

原文由 Yuval 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 498
2 个回答

标准库中没有 Java 集合来执行此操作。 LinkedHashSet<E> preserves ordering similarly to a List , though, so if you wrap your set in a List when you want to use it as a List 你会得到你想要的语义。

Alternatively, the Commons Collections (or commons-collections4 , for the generic version) has a List which does what you want already: SetUniqueList / SetUniqueList<E>

原文由 Calum 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我所做的并且有效。

假设我有一个 ArrayList 来处理我做的第一件事是创建一个新的 LinkedHashSet

 LinkedHashSet<E> hashSet = new LinkedHashSet<E>()

然后我尝试将我的新元素添加到 LinkedHashSet 。 add 方法不会改变 LinkedHasSet 并且如果新元素是重复的则返回 false。所以这成为我可以在添加到 ArrayList 之前测试的条件。

 if (hashSet.add(E)) arrayList.add(E);

这是一种防止将重复项添加到数组列表的简单而优雅的方法。如果需要,您可以将它封装在扩展 ArrayList 的类中并覆盖 add 方法。只需记住通过遍历元素并调用 add 方法来处理 addAll

原文由 user3570018 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题