Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有push/pop且无重复项的Java数据结构?_Java_Data Structures_Set_Queue - Fatal编程技术网

具有push/pop且无重复项的Java数据结构?

具有push/pop且无重复项的Java数据结构?,java,data-structures,set,queue,Java,Data Structures,Set,Queue,我正在寻找Java中的队列类型数据结构(最好是在标准libs中),它具有以下属性: 我可以向结构中添加元素(推送) 我可以从结构中删除任意元素,而无需指定哪个元素,如队列的remove()操作。显然,如果结构为空,则此操作将失败 如果我将一个元素添加到已经在其中的结构中,它不会被添加两次 保留插入/删除的顺序并不十分重要 Set结构具有无重复项,但不具有pop操作,Queue结构不保证无重复项。有适合我需要的东西存在吗 为了避免XY问题,我正在做一个工作列表算法:需要更新的节点被添加到集合中

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

  • 我可以向结构中添加元素(推送)
  • 我可以从结构中删除任意元素,而无需指定哪个元素,如队列的
    remove()
    操作。显然,如果结构为空,则此操作将失败
  • 如果我将一个元素添加到已经在其中的结构中,它不会被添加两次
保留插入/删除的顺序并不十分重要

Set
结构具有无重复项,但不具有
pop
操作,
Queue
结构不保证无重复项。有适合我需要的东西存在吗


为了避免XY问题,我正在做一个工作列表算法:需要更新的节点被添加到集合中,因此我想轻松弹出下一个需要更新的节点,并添加需要更新的节点,如果它们已经在工作列表中,则无需获得一堆重复的节点。

使用
LinkedHashSet
,并根据需要执行
pop

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

使用
LinkedHashSet
,并将
pop
实现为

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

您可以使用集合的迭代器删除单个元素。排序将取决于集合实现

static <T> T remove(Set<T> set) {
    Iterator<T> iter = set.iterator();
    T element = iter.next();
    iter.remove();
    return element;
}
static T remove(设置){
迭代器iter=set.Iterator();
T元素=iter.next();
iter.remove();
返回元素;
}

您可以使用集合的迭代器删除单个元素。排序将取决于集合实现

static <T> T remove(Set<T> set) {
    Iterator<T> iter = set.iterator();
    T element = iter.next();
    iter.remove();
    return element;
}
static T remove(设置){
迭代器iter=set.Iterator();
T元素=iter.next();
iter.remove();
返回元素;
}

也许你的意思是
迭代器.next()
迭代器.remove()?捕捉良好,已修复。可能您指的是
iterator.next()
迭代器.remove()?捕捉良好,已修复。看起来像同一个问题:@Golionko类似。此问题没有订购要求。看起来是同一个问题:@Golionko-similor。此问题没有订购要求。