使用Java 8流,如何使用索引替换地图中的键?

Csa*_*aba 2 java lambda java-8 java-stream

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

azr*_*zro 6

正如指出的迈克尔一个Map密钥是唯一Integer下列对方可以减少一个List<Map<String, Integer>>,但如果你真的是你的具体结构:

  1. 你可以使用AtomicInteger:

    AtomicInteger a = new AtomicInteger(0);
    before.forEach((key, value) -> after.put(a.getAndIncrement(), value));
    
    Run Code Online (Sandbox Code Playgroud)

    =>这里的工作示例


  1. 或者,after开始时是空的

    before.values().forEach(value -> after.put(after.size(), value));
    
    Run Code Online (Sandbox Code Playgroud)

    =>这里的工作示例