具有推送/弹出且没有重复项的 Java 数据结构?

标签 java data-structures set queue

我正在寻找具有以下属性的 Java 队列类型数据结构(最好是在标准库中):

  • 我可以向结构中添加一个元素(推送)
  • 我可以从结构中删除任意元素而无需指定是哪个元素,就像队列的remove() 操作一样。显然,如果结构为空,这将失败。
  • 如果我向已经存在的结构中添加一个元素,则不会添加两次。

保留插入/删除的顺序并不是特别重要。

Set结构没有重复,但是没有pop操作,Queue结构不保证没有重复。是否存在符合我需求的东西?

为了避免XY问题,我在做一个worklist算法:将需要更新的节点添加到集合中,所以我想轻松弹出下一个需要更新的节点,并添加需要更新的节点而不用如果它们已经在工作列表中,则会得到一堆重复项。

最佳答案

使用LinkedHashSet,并将pop实现为

Iterator<E> iterator = set.iterator();
E result = iterator.next();
iterator.remove();

关于具有推送/弹出且没有重复项的 Java 数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401777/

相关文章:

java - Hamcrest CombinableMatcher - 通用方法无法编译

java - Apache Camel : Can I use @Produce without specifying the endpoint uri in the annotation?

java - 事件处理,数据结构和程序设计,java

MYSQL|将值插入 SET 数据类型

python - 有序集 Python 2.7

mysql 默认字符集在被 php 调用时不同

java - 将 24 小时制时间转换为 Joda-Time 中的上午/下午

java - 以编程方式设置按钮单击时的 View 宽度

java - 给定二叉树,在每个深度(BFS 或 DFS)创建所有节点的链表

c - theta 表示法称为平均情况吗?