将Java中的forEach转换为map collect

时间:2018-04-24 22:37:46

标签: java

我有一个名为aMap的嵌套映射,其中key是一个字符串,value是另一个映射(称为y)。这个y包含字符串作为键和值。我想处理嵌套映射中的值并根据某些逻辑聚合y中的一些键(基本上我减少了y中的键数)。我能够使用forEach运行我的逻辑,但我需要使用map转换以下内容并在Java 8中收集。问题是我不确定在collect函数内写什么。

每个代码:

aMap.forEach(
      (x, y) -> {
        Set<String> remove = new HashSet<>();
        Map<String, Double> add = new HashMap<>();

        y.forEach(
            (key, value) -> {
              String z = key;
              long b = 0;
              try {
                b = some_conversion_on_z()
              } catch (ParseException e) {
                logger.error("Failed to convert", e);
              }
              if (some_condition_on_b) {
                String d = some_conversion_on_z()
                Double currCount = value;
                Double prevCount = y.get(d);
                if (prevCount == null) {
                  prevCount = 0.0;
                  add.put(d, prevCount + currCount);
                } else {
                  y.put(d, prevCount + currCount);
                  remove.add(z);
                }
              }
            });
        y.keySet().removeAll(remove);
        y.putAll(add);
      });

我正在尝试的地图收集:

aMap.entrySet()
.map(x -> x.getValue())
.map(y -> y.getKey())
.filter(some_condition_on_y)
.collect(?)

0 个答案:

没有答案