我有這行輸出數字0到5的平方:如何獲取IntStream.map.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
我有這行輸出數字0到5的平方:如何獲取IntStream.map.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
一旦你map
i
到i*i
你失去原來的i
。
您可以刪除map
並做forEach
內的計算:
IntStream.rangeClosed(0, 4).forEach(i -> System.out.println(i + ": " + i*i));
或者你可以做這樣的(映射到按鍵的Pair
/值):
IntStream.rangeClosed(0, 4)
.mapToObj(i -> new AbstractMap.SimpleEntry<>(i, i * i))
.forEach(System.out::println);
非常好的選擇。如果計算不像i * i那樣簡單,這可能是正確的解決方案。非常感謝你。 – RedSea
謝謝非常簡短和清楚的解釋,當然你的答案。 – RedSea