首页 > 解决方案 > 使用 Java 8 流,如何将地图中的键替换为其索引?

问题描述

所以我有一个Map<String, Map<String, Integer>>并且我想将它转换为一个 Map<Integer, Map<String, Integer>>字符串键被替换为它在地图中的索引(0,1,2,.....)。我知道地图中的索引不准确,但这对我来说并不重要。我尝试使用 AtomicInteger 作为在流上的每次操作后递增的索引,但我无法解决问题......

标签: javalambdajava-8java-stream

解决方案


正如Michael a所指出的Map,其中键仅Integer相互跟随可以减少为 a List<Map<String, Integer>>,但如果你真的是你的特定结构:

  1. 你可以使用AtomicInteger

    AtomicInteger a = new AtomicInteger(0);
    before.forEach((key, value) -> after.put(a.getAndIncrement(), value));
    

    => 这里的工作示例


  1. 或者, isafter在开始时为空

    before.values().forEach(value -> after.put(after.size(), value));
    

    => 这里的工作示例


推荐阅读