使用 IntStream 迭代索引
Stream
s 元素通常不允许访问当前项的索引值。要在访问索引时迭代数组或 ArrayList
,请使用 IntStream.range(start, endExclusive)
。
String[] names = { "Jon", "Darin", "Bauke", "Hans", "Marc" };
IntStream.range(0, names.length)
.mapToObj(i -> String.format("#%d %s", i + 1, names[i]))
.forEach(System.out::println);
该 range(start, endExclusive)
方法返回另一个 ÌntStream
和 mapToObj(mapper)
返回 String
流。
输出:
#1 Jon
#2 Darin
#3 Bauke
#4 Hans
#5 Marc
这与使用带计数器的普通 for
循环非常相似,但具有流水线和并行化的优点:
for (int i = 0; i < names.length; i++) {
String newName = String.format("#%d %s", i + 1, names[i]);
System.out.println(newName);
}