使用 Java-8 Streams API 将字符串列表转换为 Map

Posted

技术标签:

【中文标题】使用 Java-8 Streams API 将字符串列表转换为 Map【英文标题】:Convert List of Strings into Map using Java-8 Streams API 【发布时间】:2018-03-26 03:05:02 【问题描述】:

我有清单

List<String> cars = Arrays.asList("Ford", "Focus", "Toyota", "Yaris","Nissan", "Micra", "Honda", "Civic");

现在,我可以使用 Java 8 Streams API 将此列表转换为我得到福特 = 焦点、丰田 = yaris、尼桑 = 米克拉、本田 = 思域的地图吗?

【问题讨论】:

Java 8 List<V> into Map<K, V>的可能重复 @nullpointer 不是真的,这是一个完全不同的问题(将元素映射在一起与将元素映射到其他东西) 【参考方案1】:

这是一个关于如何做到这一点的示例:

 Map<String, String> carsMap =
            IntStream.iterate(0, i -> i + 2).limit(cars.size() / 2)
                    .boxed()
                    .collect(Collectors.toMap(i -> cars.get(i), i -> cars.get(i + 1)));

基本上,只需遍历每 2 个元素并将其映射到下一个元素。 注意,如果元素个数不偶数,则不会考虑最后一个元素。

【讨论】:

非常感谢保罗的帮助。我用@nullpointer 建议的解决方案尝试了我的问题。但对于那些对 lambda 工作原理知之甚少的人来说,这是一种混淆方式。我的问题与之前在这里提出的类似问题完全不同。此外,我不希望得到我的问题的答案,因为我发现这里的版主非常专横和欺负。但你救了我的命。再次感谢。 :) @meticulous_guy :)

以上是关于使用 Java-8 Streams API 将字符串列表转换为 Map的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 中的 Streams API

Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解

Java 8 中的 Streams API 详解