我正在尝试实现一些需要对<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()将它们视为未排序的集合。)

10-06 14:03