使用MultiMap的优先级队列 – Java

前端之家收集整理的这篇文章主要介绍了使用MultiMap的优先级队列 – Java前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须使用MultiMap实现Priority Queue.我使用Google Collections中的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 Collections中),它允许您指定顺序并按顺序遍历列表中的项目.例如:
for (Map.Entry<Integer,String> entry : multimap.entries()) {
  System.out.println("Item " + entry.getValue() + " has priority " + entry.getKey();
}

您会注意到这总是以优先级顺序打印输入,因此要获得第一优先级元素,您可以执行multimap.entries().iterator().next()(假设您知道地图至少有一个元素) ).

有关更多信息,请参见the TreeMultimap documentation.

猜你在找的Java相关文章