【发布时间】:2016-10-29 12:45:59
【问题描述】:
有没有一种方便的 Java8 流 API 方法可以从 List<T> to Map<T, (index)> 进行转换,如下例所示:
List<Character> charList = "ABCDE".chars().mapToObj(e->(char)e).collect(Collectors.toList());
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < charList.size(); i++) {
map.put(charList.get(i), i);
}
地图 = {A=0, B=1, C=2, D=3, E=4}
【问题讨论】:
-
Streams API 似乎严重缺少
zipWithIndex操作。 -
不要认为它是重复的,但您可能会使用这样的收集器:gist.github.com/lyubomyr-shaydariv/…
-
@LyubomyrShaydariv:谢谢,看起来不错,但它比原来的要复杂得多。目标是使其简单易读。
-
@DanielHári 好吧,收集器的实现通常很复杂,但只需编写一次,因此您可以在任何地方使用它们。
-
在这个问题中,目标是遍历字符串中的字符及其索引。但是 Stream API 没有一个很好的方法来使用带有字符及其索引的 Stream,并且链接的问题显示了如何以通用方式做到这一点:创建一个
IntStream然后可能调用mapToObj(或boxed())。
标签: java lambda java-8 java-stream