스트림 & 재귀
스트림
여러가지 다양한 데이터 소스에 접근하여 데이터를 처리하는 방법을 표준화
배열, 리스트, 집합 등 다양한 데이터에 동일한 데이터 처리 적용 가능
데이터소스 -> 스트림 생성 -> 중간 처리 -> 최종 연산 순으로 진행
- 원본 데이터를 변경하지 않는다.
내부 반복으로 작업을 처리한다.
- 모든 연산은 최종 연산 시 한번에 이루어진다. (Lazy Evaluatioin)
- 중간 처리와 최종 연산 시 함수형 프로그래밍이 자주 사용된다.
스트림 API를 사용하는 이유?
- 높은 가독성
- 높은 생산성
- 디버깅 시간 최소화
자주 사용하는 스트림
List
int[] intArray = list.stream().mapToInt(i->i).toArray();
java11
List<Integer> list1 = Array.stream(intArray).boxed().collect(Collectors.toList());
java16
두개의 배열의 합을 출력
IntStream.range(0,array1.lenght).map(i -> array1[i] + array2[i]).forEach(System.out::println);
두 배열을 결합하여 A객체 생성
절대값이 최대인 값 찾기
maxVal = listAbs.stream().max((x,y) -> Math.abs(x) - Math.abs(y)).get();