加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用MultiMap的优先级队列 – Java

发布时间:2020-12-14 19:28:01 所属栏目:Java 来源:网络整理
导读:我必须使用MultiMap实现Priority Queue.我使用Google Collections中的MultiMap. 以下代码创建了一个MultiMap,并在其中添加了一些元素. MultimapInteger,String multimap = HashMultimap.create(); multimap.put(5,"example"); multimap.put(1,"is"); multima
我必须使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读