Multimap实际上具有按键排序的数据组.我想要一种方法,通过该方法我可以访问这些单独的组并获取它们的聚合值.例如,在std::multimap< string, int >I商店中
{"Group1", 1},
{"Group1", 2},
{"Group1", 3},
{"Group2", 10},
{"Group2", 11},
{"Group2", 12}
Run Code Online (Sandbox Code Playgroud)
存储了这些值之后,我应该能够迭代这个多图并获得每个"组"的聚合值.问题是STL中没有定义任何以这种方式访问MultiMaps的函数.我可以使用lower_bound,upper_bound手动迭代多图并总计组的内容,但我希望有更好的方法在STL中定义?任何人都可以提出一个解决方案,如何在上面的例子中获取组的聚合值.
是否可以在哈希表中为同一个键设置多个值?如果没有,你能建议任何可以使用的类或接口吗?
码:
Multimap<String, String> myMultimap = ArrayListMultimap.create();
myMultimap.put("12345", "qwer");
myMultimap.put("12345", "abcd");
myMultimap.put("12345", "qwer");
System.out.println(myMultimap);
Run Code Online (Sandbox Code Playgroud)
结果:
{12345=[qwer, abcd, qwer]}
Run Code Online (Sandbox Code Playgroud)
是否有可能消除重复的"qwer"?谢谢.
我想有一个c.g.c.c.Multimap仅基于键排序的.不应对值进行排序.我试图用番石榴来构建一些东西TreeMultimap,但我不能使用它,因为值类型没有实现Comparable.
public class MyObject /* doesn't implement Comparable */ {
private String name;
private int score;
// Getters/setters are implemented
public static Function<MyObject,Integer> myObjectToScore {
@Override public Integer apply (MyObject o) { return o.score; }
}
public static Multimap<Integer,MyObject> indexOnScore(Iterable<MyObject> i) {
Multimap<Integer,MyObject> m = Multimaps.index(i, myObjectToScore());
// Do the sort of the keys.
return m;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经考虑过获取一些SortedSet密钥,然后迭代排序集中的每个密钥以获取各种值,但我希望在Guava中使用现有的(但尚未发现的)功能而不是使用这种黑客.
注意:我不会制作MyObject工具,Comparable因为它对我的实际对象毫无意义.
输入/输出示例:
Set<MyObject> s = Sets.newHashSet(
new …Run Code Online (Sandbox Code Playgroud) 我必须遍历谷歌多图.但
假设我有一个元组列表List[(A, B)].将其转换为multimap映射A到的a的最佳方法是什么Set[B]?我可以构建一个不可变的 multimap吗?
可能重复:
C#可排序集合,允许重复键
基本上我想使用重复键使Dictionary工作,而无需进入自定义比较器实现.有一个想法:
Dictionary<key, List<value>>
Run Code Online (Sandbox Code Playgroud)
但它仍然有一些开销.我希望词典有"AllowDuplicates".
#include <map>
...
multimap<char,int> first;
first.insert(pair<char,int>('a',10));
first.insert(pair<char,int>('b',15));
first.insert(pair<char,int>('b',20));
first.insert(pair<char,int>('c',25));
Run Code Online (Sandbox Code Playgroud)
说我现在想要删除我刚刚添加到地图中的一对.
我有一些例子来删除整个密钥条目,对于密钥'b',它将删除'b',15和'b',20.
但是,删除的代码是什么,比如,'b',20?
例如,使用动态数组实现C++向量,其中每个元素使用连续的内存空间.
我知道C++多图是一对多的关系,但内部结构是什么?
我正在寻找一种存储键值对的方法.我需要查找是双向的,但同时我需要为同一个密钥存储多个值.换句话说,比如BidiMap,但是对于每个键,可以有多个值.例如,它需要能够保持像对象:"s1" - > 1,"s2" - > 1,"s3" - > 2,我需要能够获取映射到每个键的值,并且对于每个值,获取与其关联的所有键.
multimap ×10
java ×5
c++ ×3
guava ×3
collections ×2
.net ×1
containers ×1
dictionary ×1
hashtable ×1
map ×1
scala ×1
sorting ×1
stl ×1