我正在尝试实现一些需要对<Destination -> Quantity>
映射的值进行排序的内容,例如:
<San Francisco -> 10, Seattle -> 20, LA -> 10}
这些值不一定是不同的。我希望能够检索具有最大和最小值的键/值对,类似于TreeMap可以对键进行的操作。
我找到了Google Guava的TreeMultimap,它是Multimap的实现,其键和值通过其自然顺序或提供的比较器进行排序。事实是,TreeMultimap似乎没有让我根据键或值的顺序检索键/值对的任何方法(例如
pollFirstEntry()
在TreeMap中的操作)。在这个程度上,我对如何使TreeMultimap获得此功能有些困惑。我觉得它应该工作,也许只是我如何实例化对象的问题?
最佳答案
我很确定,TreeMultimap
不会以您想要的方式来支持此功能。
您可以做的是TreeMultimap<Integer, String>
-交换键和值的作用-然后TreeMultimap.asMap().lastEntry()
将为您提供一个Map.Entry<Integer, Collection<String>>
,对应于最大的Integer
和所有关联的String
用它。TreeMultimap
绝对不支持的一件事是将所有键的组合值视为单个排序的集合。 (当然,您可以使用values()
将它们视为未排序的集合。)