代码之家  ›  专栏  ›  技术社区  ›  user1692342

如何在kotlin收集成对数据流?

  •  1
  • user1692342  · 技术社区  · 6 年前

    如何在kotlin收集成对数据流? 所以在Java中,我通常会:

    Stream.of("1", "2", "3").map(x -> new AbstractMap.SimpleEntry<>(x, x)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
    

    Stream.of("1", "2", "3").map{ x -> x to x } 
    

    返回一个成对的流,我找不到方法来收集这个。

    2 回复  |  直到 6 年前
        1
  •  4
  •   Todd    6 年前

    在科特林,使用更自然 listOf() 而不是Java的 Stream.of() List<Pair> ,您可以使用 .toMap() 把他们变成地图!

    val myMap: Map<String, String> = listOf("1", "2", "3").map{ it to it }.toMap()
    

    还有一个问题 .associate() 功能开启 List 这将为您创建一个地图,给定一个lambda:

    val myMap2: Map<String, String> = listOf("1", "2", "3").associate { it to it }
    

    那个看起来更干净,伊莫。

        2
  •  0
  •   Willi Mentzel user670265    6 年前

    associateWith 会使代码更加简洁:

    val myMap = listOf("1", "2", "3").associateWith{ it }
    

    {1=1, 2=2, 3=3}