IntStream
코딩테스트 문제를 풀며 새로운 반복문에 대해 알게되었다.
for문, while문 보다 가독성이 좋은 IntStream에 대해 알아보자.
int arr[];
if (n % 2 == 0){
arr = new int[n/2];
}else{
arr = new int[n/2+1];
}
int j = 0;
for(int i = 1; i <= n; i++){
if(i % 2 == 1){
arr[j++] = i;
}
}
위와 같이 길고 가독성이 좋지 않은 코드를 IntStream 아래와 같이 사용할 수 있다.
int arr[] = IntStream.rangeClosed(1,n).filter(value -> value % 2 != 0).toArray();
IntStream.range(int n, int m)는 n에서 m사이의 int를 차례대로 스트림으로 방출한다.
이 때 두 번째 파라미터는 범위를 포함하지 않는데, 이때 rangerClosed()를 사용하도록 한다.
IntStream.rangeClosed(int n, int m)
range()와 차이는 두 번째 파라미터를 포함하냐의 차이이다.