使用MultiMap的优先级队列-Java

开发:

我必须使用MultiMap来实现Priority Queue。我使用Google收藏夹中的MultiMap。以下代码创建一个MultiMap并向其中添加一些元素。

    Multimap<Integer, String> multimap = HashMultimap.create();

    multimap.put(5,"example");
    multimap.put(1,"is");
    multimap.put(1,"this");
    multimap.put(4,"some");

现在我的问题是如何编写pop方法?

我认为应该有一个for循环,并且应该通过MultiMap进行迭代。

最低键应该是最高优先级,因此在C ++中,我将设置一个指向第一个元素的指针并将其递增。用Java怎么做?

雅各布:

HashMultimap你使用不会给你有效地选择最低的元素的任何帮助。而是使用TreeMultimap(也在Google收藏夹中)允许您指定顺序并以该顺序遍历列表中的项目。例如:

for (Map.Entry<Integer, String> entry : multimap.entries()) {
  System.out.println("Item " + entry.getValue() + " has priority " + entry.getKey();
}

您会注意到,这始终会按优先级顺序打印出条目,因此您只需执行一次即可获得第一个优先级元素multimap.entries().iterator().next()(假设您知道地图至少包含一个元素)。

有关更多信息,请参见TreeMultimap文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

了解优先级如何与Java优先级队列中的compareTo一起使用?

优先级队列比较-Java与C ++

用Java排序优先级队列

Java优先级队列如何工作?

Java中的优先级队列

优先级队列vs链表Java

Java链表优先级队列

Java。是否可以在优先级队列中使用一对,然后使用键作为优先级返回值

进行优先级队列会导致Java错误

java中优先级队列的比较器

Java中整数数组的优先级队列

Java中的优先级队列(最小堆)排序

Java中HashMap对象的优先级队列

Java优先级队列应该如何工作?

从索引优先级队列中删除(java)

(Java)优先级队列Lambda表达式

使Java PriorityQueue成为稳定的优先级队列

Java优先级队列窥视和轮询

为什么在Java中使用Offer()填充优先级队列时,会按字母顺序填充它,同时还对大写单词赋予优先级?

Java(Scala)阻塞队列可以允许队列跳线(更高优先级)吗?

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

Java中的优先级

Java 对象优先级队列 :: 一种检查对象成员的方法?

在Java中为优先级队列实现自定义比较器的问题

Java:优先级队列(或最小堆),删除任意节点的O(log n)

如何在Java中迭代和更改优先级队列中每个项目的值

在Java中将键和值添加到优先级队列并按键排序

double数据类型在java中的优先级队列中未正确排序

在Java中实现优先级队列的有效方法?