我必须使用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] 删除。
我来说两句