![](/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.