-
Stream.of vs Arrays.stream개발/java 2021. 12. 23. 23:09
배열을 받아서 가공의 편의성을 위해 이를 스트림으로 변환을 한다고 할때 Stream.of 와 Arrays.stream 둘다 사용을 할 수 있습니다.
왜 굳이 자바에서 두개를 만들어서 .. 넣었을까 .. 궁금증이 생겼습니다.
둘은 3가지의 차이점이 있습니다.
1.반환 유형이 다릅니다.
int[] temp = {1, 2, 3, 4, 5}; Stream<int[]> test1_1 = Stream.of(temp); IntStream test1_2 =Arrays.stream(temp);
2. Stream.of는 가공을 한번 더 거쳐야 합니다.
Stream.of(temp).forEach(t-> System.out.print(t+",")); //결과값 [I@17f6480, Stream.of(temp).flatMapToInt(Arrays::stream).forEach(t-> System.out.print(t+",")); //결과값 1,2,3,4,5,
3.Stream.of는 제네릭으로 인해 모든것이 사용가능한 반면 Arrays.stream은 int , long , double , String 만 가능합니다.
float[] temp1 = {1, 3, 4, 5}; Arrays.stream(temp1); //컴파일 에러
차이점을 보시면 굳이 귀찮다 .. 싶으면 Stream.of로 하는게 맞는데 Arrays.stream으로 해보고 컴파일 에러가 보인다 하면 그때 Stream.of를 사용하는게 성능상 이점은 분명 있을 것 같습니다.
cf) 자바에서도 추천합니다.
별도 클래스로 리스트를 만들거나
'개발 > java' 카테고리의 다른 글
초기화블록 (0) 2021.12.25 Builder 패턴 활용기 (0) 2021.12.25 제네릭이 멀까 (0) 2021.12.22 Iterate는 멀까 (0) 2021.12.18 enum 활용법 (0) 2021.12.15