Java 如何获取IntStream.map.forEach的索引?
我有一行,它打印数字0到5的平方:Java 如何获取IntStream.map.forEach的索引?,java,java-stream,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 一旦你把i映射到i,你就失去了原来的i 您可以删除地图并在forEach中进行计算: 一旦你把i映射到i,你就失去了原来的i 您可以删除地图并在forEach中进行计算: 或者,您可以像这样映射到
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
一旦你把i映射到i,你就失去了原来的i
您可以删除地图并在forEach中进行计算:
一旦你把i映射到i,你就失去了原来的i
您可以删除地图并在forEach中进行计算:
或者,您可以像这样映射到一对键/值:
IntStream.rangeClosed(0, 4)
.mapToObj(i -> new AbstractMap.SimpleEntry<>(i, i * i))
.forEach(System.out::println);
或者,您可以像这样映射到一对键/值:
IntStream.rangeClosed(0, 4)
.mapToObj(i -> new AbstractMap.SimpleEntry<>(i, i * i))
.forEach(System.out::println);
非常感谢您简短明了的解释,当然也感谢您的回答。非常感谢您简短明了的解释,当然也感谢您的回答。非常好的选择。如果计算不像i*i那么简单,这可能是正确的解决方案。非常感谢。非常好的选择。如果计算不像i*i那么简单,这可能是正确的解决方案。非常感谢你。