Java 中有序集的任何实现?

新手上路,请多包涵

如果有人熟悉 Objective-C,那么有一个名为 NSOrderedSet 的集合,它充当 Set 并且它的项目可以作为 Array 的项目进行访问。

Java中有这样的东西吗?

我听说有一个名为 LinkedHashMap 的集合,但我还没有找到类似的集合。

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

阅读 368
2 个回答

看一下 LinkedHashSet

来自 Java 文档

Set 接口的哈希表和链表实现,具有可预测的 _迭代顺序_。此实现与 HashSet 的不同之处在于它维护一个贯穿其所有条目的双向链表。该链表定义了迭代顺序, 即元素插入集合的顺序 (insertion-order) 。 _请注意,如果将元素重新插入到 set 中,插入顺序不会受到影响_。 (如果 s.add(e) 被调用时元素 e 被重新插入到集合 s 中,而 s.contains(e) 将在调用之前立即返回 true。)。

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

每个 Set 都有一个 iterator()。普通 HashSet 的迭代器是相当随机的,TreeSet 按排序顺序执行, LinkedHashSet 迭代器按插入顺序迭代。

但是,您不能替换 LinkedHashSet 中的元素。您可以删除一个并添加另一个,但新元素不会取代原始元素。在 LinkedHashMap 中,您可以替换现有键的值,然后这些值仍将按原始顺序排列。

另外,您不能在某个位置插入。

也许您最好使用带有显式检查的 ArrayList 以避免插入重复项。

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

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