https://school.programmers.co.kr/learn/courses/30/lessons/120833
위의 프로그래머스 문제를 풀다가, 배열을 자르는 방법에 대해 좋은 방법으로 IntStream이 있었다다.
이 IntStream을 알아보기 전에 Stream이 무엇인지 알아보자.
스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있으며, list/set 과 같은 컬렉션에서 요소를 반복 처리하기 위해 사용한다.
Stream<String> stream = list.stream();
stream.forEach(item -> //item 처리 );
➡️ List 컬렉션의 stream() 메소드로 Stream 객체를 얻고, forEach() 메소드로 요소를 어떻게 처리 할지를 람다식으로 제공한다.
stream의 특징으로는
1. 내부 반복자이므로 처리 속도가 빠르고

2. 병렬 처리에 효율적이다. - 내부 반복자는 멀티 코어 CPU를 최대한 활용하기 때문에

2. 람다식으로 다양한 요소 처리를 정의할 수 있다.
3. 중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성할 수 있다.
java.util.stream 패키지에는 스트림 인터페이스들이 있다.


스트림에 대해 간략하게 알아보았으니 이제 IntStream에 대해서 알아보자.
문제에서 활용할 메소드는,
IntStream의 정적메소드인 range() 와 rangeClosed() 메소드를 이용하면 특정 범위의 정수 스트림을 얻을 수 있다.
public class CutArray {
public static int sum;
public static void main(String[] args) {
IntStream stream = IntStream.range(1,101); // idx 1 ~ 100까지
stream.forEach(a -> sum += a);
}
}
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = IntStream.range(num1, num2 + 1)
.map(i -> numbers[i])
.toArray();
return answer;
}
--