java - 使用 Java 8 流,如何用索引替换映射中的键?

标签 java lambda java-8 java-stream

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

最佳答案

正如 Michael 指出的那样 Map其中 key 只有 Integer相互关注可以减少为 List<Map<String, Integer>> ,但如果你真的知道你的具体结构:

  1. 您可以使用AtomicInteger :

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

    => Working example here

<小时/>
  • 或者,是after开始时为空

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

    => Working example here

  • 关于java - 使用 Java 8 流,如何用索引替换映射中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50306707/

    相关文章:

    java - Hamcrest Matchers.containsInAnyOrder 不起作用

    java - 将 JTable 大小设置为没有空格

    Java AES加解密过程及Initialization Vector的使用

    android - 如何从 Android 中的数据绑定(bind)访问 Kotlin Lambda 函数

    haskell - monad 声明中带有 lambda 符号 "m >> n = m >>=\_ -> n "的等式是什么?

    java - 显然 java 没有适用于 Linux 和 Windows 的相同 nashorn.jar

    java - 骰子仿真 - 用于循环的 ImageButton 名称的串联

    Python Pandas - 使用 For 语句添加列名称

    java - 奇怪的 ForkJoinPool 行为

    java - Hibernate 连接字符串做 MS SQL Server 2008 数据库名称(带大括号)