ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바8 스트림 API & Optional<T>
    우아한테크캠프 2018. 7. 3. 22:50

    자바8 기능을 의식적으로 사용하는 전 직장 동기 덕분에, 나 또한 자바8 기능을 의식적으로 사용하고 있다.




    스트림



    데이터 소스(배열, 컬렉션, 파일 etc...)가 무엇이든지 간에 같은 방식으로 처리할 수 있게 해준다.


    스트림을 사용할 때 장점

    코드가 간결해지고 이해하기 쉽다.


    스트림 연산

    중간 연산 : 연산결과가 스트림 ex) map( ), flatMap( )

    • 자르기 - skip( ), limit( )
    • 걸러내기 - filter( ), distinct( )
    • 정렬 - sorted( )
    • 스트림 타입 변환 - map( )
    • 데이터 조회 - peek( )
    • Stream<T[]>을 Stream<T>로 변환 - flatMap( )


    최종 연산 : 연산 결과가 스트림이 아님 ex) reduce( ), collect( )

    • forEach( )
    • 통계 - count( ), sum( ), average( ), max( ), min( )
    • 리듀싱 - reduce( )
    • 컬렉션과 배열로 변환 - toList( ), toSet( ), toMap( ), toCollection( ), toArray( )


    주의

    1. 스트림은 데이터 소스를 읽기만 하지 원본을 변경하지 않는다. 수정한 것이 필요하다면 컬렉션이나 배열에 담아서 반환하면 된다.

    2. 스트림은 한번 사용하면 닫혀서 다시 사용할 수 없다.

    3. 지연된 연산(중간 연산을 호출해도 바로 실행되는 것이 아니다. 최종 연산이 호출되어야지만 비로소 중간연산도 실행된다)




    Optional<T>



    null일 수도 있는 객체를 감싸는 래퍼 클래스


    변수명

    변수명은 대개 "maybe"나 "opt"와 같은 접두어를 붙여서 Optional 타입의 변수라는 것을 명확히 나타낸다.


    스트림에서 최종 연산의 결과 타입이 Optional<T> 인 이유?

    Optional로 감싸서 반환 하게 되면 반환 결과가 null이더라도 Optional에 정의된 메소드를 통해서 간단히 처리 가능




    참고

    자바의 정석

    https://www.slideshare.net/madvirus/8-35205661?next_slideshow=1

    '우아한테크캠프' 카테고리의 다른 글

    우아한테크캠프 Day05  (0) 2018.07.09
    우아한테크캠프 Day04  (0) 2018.07.05
    우아한테크캠프 Day03  (0) 2018.07.04
    우아한테크캠프 Day02  (0) 2018.07.03
    우아한테크캠프 Day01  (0) 2018.07.02

    댓글

Designed by Tistory.