如何获取IntStream.map.forEach的索引?

时间:2017-04-04 09:12:04

标签: java java-stream

我有这行打印数字0到5的正方形:

IntStream.rangeClosed(0, 4).map(i ->i*i).forEach(System.out::println);

输出

0
1
4
9
16

有没有办法获得如下所示的输出?

0 :0
1 :1
2 :4
3 :9
4 :16

2 个答案:

答案 0 :(得分:4)

map ii*i后,您将失去原来的i

您可以删除map并在forEach

中进行计算
IntStream.rangeClosed(0, 4).forEach(i -> System.out.println(i + ": " + i*i));

答案 1 :(得分:4)

或者您可以这样做(映射到键/值的Pair):

IntStream.rangeClosed(0, 4)
         .mapToObj(i -> new AbstractMap.SimpleEntry<>(i, i * i))
         .forEach(System.out::println);