ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.