有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将Java中的forEach转换为map collect

我有一个名为aMap的嵌套映射,其中键是字符串,值是另一个映射(称为y)。此y包含作为键和值的字符串。我想处理嵌套映射中的值,并根据某种逻辑聚合y中的一些键(基本上我是在减少y中的键数)。我可以使用forEach运行我的逻辑,但是我需要在java8中使用map和collect转换以下内容。问题是我不确定在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) 个答案