使用 IntStream 迭代索引

Streams 元素通常不允許訪問當前項的索引值。要在訪問索引時迭代陣列或 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) 方法返回另一個 ÌntStreammapToObj(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);
}