Java8重新索引地图" groupingBy"计算平行摊位

时间:2015-12-03 16:38:31

标签: java java-8 java-stream collectors

我需要按子项目计数索引先前构建的地图。

当我运行以下代码时,它会停止。删除.parallel()指令,运行正常。

我错过了什么?

Map<String, List<String>> dataById = 
    Files.lines(...).parallel()
      .groupingBy(l->l.substring(0,l.indexof(' ')));
Map<Integer, List<String>> idsByCnt = dataById.entrySet().stream().parallel()
    // collect
    .collect(
            //
            groupingBy(
                    // grouping key is number data elements
                    e -> e.getValue().size(),
                    // value is the id
                    mapping(Entry::getKey, toList())));

1 个答案:

答案 0 :(得分:1)

尝试groupingByConcurrent。否则它使用的Map是单线程的。