番石榴中没有 SortedMultiMap 吗?

No SortedMultiMap in Guava?

我正在尝试找到一种方法来获得排序的多图。我检查了 Guava,它提供了两个单独的集合数据结构,它们结合起来可以解决我的问题。值得注意的是,SortedSetMultimap 不能包含相同的键,因为它是一个 Set,而 Multimap 位于同一符号中。这是怎么回事?

编辑

在 C++ 中,我有类似的东西,希望它能告诉你我打算如何在 Java 中使用类似的功能:

  struct KeyCompare : public binary_function<pair<double,double>, pair<double,double>, bool>
  {
    bool operator()(const pair<double,double>& p1, const pair<double,double>& p2) const;
  };

  multimap<pair<double,double>, Object*, KeyCompare> _list;

  .../...

  KeyCompare key_compare;

  while (( ! _list.empty() && key_compare(_list.begin()->first, k))) {

    u = _list.begin()->second;
    v = _list.begin()->first;

英语:我需要一个地图,其中的键是引用值中包含的某些对象的双精度对。映射可以包含多个相同的键(会出现同一对双数),因此这需要是一个多映射或包。发生这种情况时,可以将该元素插入到集合中,并且在选择顶部元素时,它应该 return 其中之一(哪个都无关紧要)。我需要集合是可变的,因为对于每次迭代,我都会选择较小的元素并将其从地图中删除。

您可能在寻找 MultimapBuilder.treeKeys().arrayListValues().build() 吗?

如果您需要通过比较器,可能看起来像

 MultimapBuilder.treeKeys(new Comparator<Pair<Double, Double>>() {
      @Override public int compare(Pair<Double, Double> p1, Pair<Double, Double> p2) {
        return ComparisonChain.start()
            .compare(p1.first(), p2.first())
            .compare(p1.second(), p2.second())
            .result();
      }
    }).arrayListValues().build();