Java

Lambda, Stream

Sol b 2023. 10. 11. 18:33
 

'Books/Modern Java In Action' 카테고리의 글 목록

 

sol-b.tistory.com

 

Mordern Java In Acation을 읽고 간단하게 Lambda와 Stream을 정리한 글입니다.

 

Lambda와 Stream

Lambda와 Stream이 등장한 이유는 빅데이터를 효율적으로 관리하기 위해 나왔습니다. 

간단하게 설명하자면 아래와 같습니다.

빅데이터지원 ➡️ 병렬화 강화 ➡️ 컬렉션 강화 ➡️
스트림강화 ➡️ 람다 도입 ➡️ 함수형 인터페이스 도입 

Lambda

 함수형 인터페이스를 간단하게 실행할 수 있는 코드블럭
함수형 인터페이스에서만 사용이 가능합니다. 

즉, 코드블록(함수형 인터페이스의 구현체)을 변수처럼 사용할 수 있다는 것입니다.

익명 객체조자 없이 바로 코드블록만 사용하면 됩니다.

 

함수형 인터페이스

추상 메서드 한개만 정의되어있는 인터페이스 입니다.

자바에서 제공하는 함수형 인터페이스

Predicate T -> boolean boolean test(T t)
Consumer T -> void void accept(T t)
Supplier () -> T T get()
Function<T, R> T -> R R apply(T t)
Comparator (T, T) -> int int compare(T o1, T o2)
Runnable () -> void void run()
Callable () -> T V call()

 

Stream

Stream의 가장 큰장점은 How가아닌 What관점에서 데이터를 수집한다는 것입니다. 
즉, Collection처럼 어떻게 하라가 아닌 SQL구문처럼 무엇을 원한다의 질의를 할 수 있습니다.

 

Stream은 Lambda, 메서드 레퍼런스와 같이 사용할 수 있습니다.

 

Stream 주의점

  • 무한 스트림
  • autoBoxing
    • IntStream , DoubleStream , LongStream을 통해 효율을 높일 수 있습니다.