繁体   English   中英

番石榴没有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;

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

您是否正在寻找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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM