如何从multimap获取值以获取值

时间:2015-12-18 06:47:01

标签: java dictionary multimap

我正在使用包含以下数据的Mutimap。

Reports = {UserName1=[report1,report2,report3], UserName2=[report4,report5],UserName3=[report6,report7,report8],UserName4=[report9]}

我希望getkey(report6)获取Multimap中的特定值,输出UserName3

2 个答案:

答案 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)

因此,当您有许多查询时,您应该选择第二种方法。