gpt4 book ai didi

java - 如何从java中的队列中删除特定元素(不是优先级队列)

转载 作者:行者123 更新时间:2023-11-30 02:25:13 26 4
gpt4 key购买 nike

如何从java(不是优先级队列)中的queue中删除特定元素。没有删除queue.remove(object)<的功能。请帮助我。

Queue<String> queue = new LinkedList<>();
queue.add("hello");
queue.add("world");
queue.add("ranjeet");

我想从中删除“world”。

最佳答案

队列接口(interface)

队列接口(interface)仅允许您从队列头部删除元素。请参阅 API 说明:

https://docs.oracle.com/javase/7/docs/api/java/util/Queue.html#remove()

队列数据结构的全部目的是将项目推到尾部并将它们从头部删除(就像真正的队列一样)。

您应该使用不同的数据结构/集合对象类型。

另一种选择是删除队列中的所有项目并将它们放入另一个队列中(您要删除的项目除外)。

最后,另一种方法是创建自己的队列实现,添加额外的方法。

链表

我的linkedlist是一个实现了Queue接口(interface)的实现,但它也实现了其他接口(interface)。

您可以使用以下方法:

remove(Object o) Removes the first occurrence of the specified element from this list, if it is present. If this list does not contain the element, it is unchanged. More formally, removes the element with the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))) (if such an element exists). Returns true if this list contained the specified element (or equivalently, if this list changed as a result of the call).

https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#remove(java.lang.Object)

您可以将代码更改为:

LinkedList<String> queue = new LinkedList<>();

或者

List<String> queue = new LinkedList<>();

为什么使用队列/链接列表?

主要问题是为什么要使用队列/链接列表?看来基本列表也可能适合您想要的。如果你想删除中间项,链表并不是最合适的。

链表

实现List和Queue两个接口(interface)。请参阅:

关于java - 如何从java中的队列中删除特定元素(不是优先级队列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com