스트림 & 재귀

스트림

여러가지 다양한 데이터 소스에 접근하여 데이터를 처리하는 방법을 표준화

  • 배열, 리스트, 집합 등 다양한 데이터에 동일한 데이터 처리 적용 가능

  • 데이터소스 -> 스트림 생성 -> 중간 처리 -> 최종 연산 순으로 진행

  • 원본 데이터를 변경하지 않는다.
  • 내부 반복으로 작업을 처리한다.

  • 모든 연산은 최종 연산 시 한번에 이루어진다. (Lazy Evaluatioin)
  • 중간 처리와 최종 연산 시 함수형 프로그래밍이 자주 사용된다.

스트림 API를 사용하는 이유?

  • 높은 가독성
  • 높은 생산성
  • 디버깅 시간 최소화

자주 사용하는 스트림

List -> int[]

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();

숫자를 정렬 후 문자열로 이어붙이기