주니어 개발자 성장기

Arrays.stream 본문

Java/기초

Arrays.stream

Junpyo Lee 2023. 8. 10. 05:28

개요

Arrays.stream()은 자바 8버전부터 추가된 것으로 매개변수로 배열 하나를 받는다.


double[], int[], long[]를 매개 변수로 줄 경우
각 각 DoubleStream, IntStream, LongStream을 반환해준다.


위에 언급된 타입을 제외하고도 특정 타입 T의 배열 T[]를 매개 변수로 지정하면, Stream를 반환한다.



DoubleStream IntStream LongStream

일반 Stream<T>와 같이 여러가지 메서드를 사용할 수 있으며 다음과 같은 메서드도 사용할 수 있다.


  • sum
  • max
  • min
  • average
  • forEach
  • toArray
  • map, mapToInt, mapToLong, mapToDouble, mapToObj



참고로, primitive type으로 배열을 만드려면 mapToInt, mapToLong, mapToDouble 메서드를 사용한 뒤 toArray()를 호출해주면 된다.

int[] array = list.stream().filter(i -> i > 5).mapToInt(i -> i).toArray();

reference type은 map에 제공하는 함수형 인터페이스의 리턴값을 통해 타입 추론이 일어난다.

Some[] somes = list.stream().map(Some::new).toArray(Some[]::new);

주의

대부분의 상황에서는 for-loop가 (특히, 싱글 쓰레드에서) 더 빠르다고 하니 가능하면 for-loop를 사용하자.
이유는 JIT compiler가 지난 수십년간 for-loop에 잘 최적화 되었기 때문이라고 한다.





참고:
Arrays (Java Platform SE 8 )
DoubleStream (Java Platform SE 8 )
IntStream (Java Platform SE 8 )
LongStream (Java Platform SE 8 )
Stream (Java Platform SE 8 )
스트림은 항상 좋을까?

'Java > 기초' 카테고리의 다른 글

[짤막 자바 상식] Stack vs Deque - 코테에서 뭘 쓰지?  (0) 2024.05.05
중첩 클래스 참고자료  (0) 2023.11.11
Effective final  (0) 2023.08.21