객체의 배열을 처리하기 위해 사용되는 Arrays.asList(T ... a).stream()
과 Arrays.stream(array)
은 기본적으로 같은 성능을 보입니다.
하지만, Primitives(기본 자료형) 배열에 사용되는 경우 Arrays.asList
을 사용하게 되면, boxed types(객체형)의 리스트 생성자를 강제하게 되고 이를 stream에 사용합니다.
반면 Arrays.stream
은 기본 자료형에 대응되는 적절한 stream 타입(IntStream, LongStream, DoubleStream)을 골라 사용하게 됩니다.
그리고 이 덕분에 더 나은 성능을 얻을 수 있게 됩니다.
규칙을 어긴 코드
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
Arrays.asList(1, 2, 3, 4).stream() // 규칙을 어긴 코드
.filter(...)
.forEach(...);
규칙을 준수한 해결책
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
int[] intArray = new int[]{1, 2, 3, 4};
Arrays.stream(intArray)
.filter(...)
.forEach(...);
If you like SONARKUBE, don’t forget to give me a star.