英文:
Remove sepecific elememt from Priority Queue of Pair
问题
以下是翻译好的部分:
PriorityQueue<Pair<Integer, Integer>> p = new PriorityQueue<>((a, b) -> a.getValue() - b.getValue());
这是优先队列的定义,可以看到元素是根据值而不是键进行排序,键-值对中的值。
现在我想要删除一个特定的元素(不在队列顶部),使用键作为搜索因素。
假设队列有以下元素:
p.add(new Pair<>(2, 1));
p.add(new Pair<>(3, 4));
p.add(new Pair<>(1, 5));
我想要删除键为(3)的元素(3,4)。
预期删除后的输出应该是:
[[2, 1], [1, 5]]
英文:
PriorityQueue<Pair<Integer, Integer>> p = new PriorityQueue<>((a,b)->a.getValue()-b.getValue());
This is how the Priority Queue is defined, in which you can see that the elements are sorted according to the value and not the key, in the key-value pair.
Now I want to remove a specific element (not on top of queue), using the key as a seach factor.
Say the Queue has elements ->
p.add(new Pair<>(2,1));
p.add(new Pair<>(3,4));
p.add(new Pair<>(1,5);
I want to delete the element (3,4), using the key (3);
The expected Output after Deletion should be ->
[[2,1], [1,5]]
答案1
得分: 5
你可以使用 removeIf
。
p.removeIf(x -> x.getKey() == 3);
// 移除所有键等于3的元素
英文:
You could use removeIf
.
p.removeIf(x -> x.getKey() == 3);
// removes all elements with key equal to 3
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论