簡體   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