我正在寻找Java中的队列类型数据结构(最好是在标准库中),它具有以下属性:
Set
操作一样。如果结构为空,显然会失败。保留插入/删除的顺序并不是非常重要。
pop
结构没有重复,但没有Queue
操作,{{1}}结构不保证没有重复。是否符合我的需求?
为了避免XY问题,我正在做一个工作列表算法:需要更新的节点被添加到集合中,所以我想轻松弹出需要更新的下一个节点,并添加需要更新的节点如果他们已经在工作清单中,那就得到一堆重复。
答案 0 :(得分:5)
使用LinkedHashSet
,并将pop
实施为
Iterator<E> iterator = set.iterator();
E result = iterator.next();
iterator.remove();
答案 1 :(得分:2)
您可以使用set的迭代器删除单个元素。排序取决于设定的实施。
static <T> T remove(Set<T> set) {
Iterator<T> iter = set.iterator();
T element = iter.next();
iter.remove();
return element;
}