我正在使用包含以下数据的Mutimap。
Reports = {UserName1=[report1,report2,report3], UserName2=[report4,report5],UserName3=[report6,report7,report8],UserName4=[report9]}
我希望getkey(report6)
获取Multimap中的特定值,输出UserName3
答案 0 :(得分:0)
在 guava ,filterValues中使用谓词,您可以获取指定的条目。例如:
Multimaps.filterValues(testMultiMap, new Predicate<List<String>>() {
@Override
public boolean apply(List<String> strings) {
return strings.contains("report6");
}
});
答案 1 :(得分:-1)
如果您不预处理数据,getkey()
查询需要扫描所有键中的所有值才能获得该位置。如果您有n个查询且地图总共有m个值,则算法复杂度为O(n*m)
。
如果您预处理数据,请将值和关键字映射到新地图中,例如newmap['report6'] = 'UserName3'
,算法复杂度将为O(m+n)
。
因此,当您有许多查询时,您应该选择第二种方法。