2017-04-04 3 views
1

I가 0 ~ 5의 숫자의 제곱 출력이 라인 :IntStream.map.forEach의 인덱스를 얻는 방법?

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

출력은 아래와 같은 출력을 얻을 수있는 방법이 있나요

0 
1 
4 
9 
16 

입니다? 당신이 i*imapi는 원래 i을 잃게되면

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

답변

4

.

당신은 map를 제거하고 forEach 내부의 계산을 수행 할 수 있습니다

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

감사합니다 짧고 명확한 설명과 물론 당신의 대답을 위해 매우 – RedSea

4

을 또는이 (키의 Pair 매핑/값)처럼 할 수있는 :

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

아주 좋은 대안. 계산이 i * i와 같이 단순하지 않은 경우 올바른 해결책이 될 수 있습니다. 고맙습니다. – RedSea

관련 문제