比较Guava MultiMap中的值列表

时间:2016-05-13 16:05:53

标签: java data-structures multimap

我有一个多图,如下所示:

key1 : [Val1, Val2, Val3,...]
key2 : [Val4, Val5, Val6,...]

Key1的值不是唯一的(多亏了Multimaps)。

我必须找到Key1的唯一值并执行相应key2值(整数)的平均值。例如,将Val1与key1的所有其他值进行比较,并发现Val1和Val3是相同的字符串。现在保持Val1 / Val3并在Key2中存在平均值(Val4,Val6)。如何访问列表中的值?

添加代码和输出:

代码:

String patternString = "(fileName\":\"|dur\":|tdur\":)([^\",]*)";

            Multimap<String, String> multimap1 = ArrayListMultimap.create();

            try(BufferedReader br = new BufferedReader(new FileReader(file))) {

                for(String line; (line = br.readLine()) != null; ) {
                    if(line.contains(".js\"")&&(line.contains("\"name\":\"v8.run\"")&&(line.contains("fileName\":")&&(line.contains("dur\":")&&(line.contains("tdur\"")))))){

                        Matcher matcher = Pattern.compile(patternString).matcher(line);
                        while (matcher.find()) {
                            multimap1.put(matcher.group(1).replaceAll(("\".*"),"_R"),matcher.group(2)); 

                            }

                    }

                    else if(line.contains(".js\"")&&(line.contains("\"name\":\"v8.compile\"")&&(line.contains("fileName\":")&&(line.contains("dur\":")&&(line.contains("tdur\""))))))
                }

            } catch (IOException e) {

                e.printStackTrace();
            }   
            for (String key : multimap1.keySet()){
                System.out.println(key + ":" + multimap1.get(key));
                        }

输出:

fileName_R:[http://localhost/NotMyScript.js,http://localhost/MyScript.js, http://localhost/MyScript.js]
tdur_R:[40, 37, 16]
dur_R:[46, 87, 17]
如果js名称匹配(即http://localhost/MyScript.js),我必须平均tdur_R(即37&amp; 16)和dur_R(即87&amp; 17)。希望这次我更清楚。

0 个答案:

没有答案