![](/img/trans.png)
[英]Is there a SortedMultimap type implementation in Guava that doesn't care about the order of its values
[英]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.