Post

[JSCode 자바 스터디] 2주차(1) - 람다, 스트림

람다와 스트림

👉 람다란 무엇인가요?

람다란 함수를 파라미터화 한 것입니다.

(인터페이스의 추상 메소드에 대한 매개변수) -> {인터페이스의 추상 메소드에 대한 구현부}

  • 함수형 인터페이스 : 추상 메서드를 하나만 갖는 인터페이스이다.
  • 람다식을 사용하면 이 인터페이스의 구현 객체가 생성된다.
  • 표준 함수형 인터페이스를 사용하는 것을 추천한다. (Runnable, Consumer ,, )

👉 스트림이란 무엇인가요?

  • 람다는 연속된 정보를 처리하기 위해 사용되며, 데이터 처리 연산을 지원하도록 데이터에서 추출된 연속된 요소를 뜻합니다.
  • 다양한 컬렉션, 배열, 람다식처럼 다양한 데이터 소스로 스트림을 생성할 수 있으며, 데이터 소스가 다르더라도 같은 방식으로 다룰 수 있어 코드의 재사용성이 높아진다는 장점이 있습니다.

👉 람다와 스트림은 왜 생겨났을까요?

자바의 코드 간결화, 멀티코어 최적화, 함수형 프로그래밍 지원을 위해 생겨났습니다.
람다와 스트림의 도입으로 다량의 데이터에 복잡한 연산을 수행할 수 있어 가독성과 재사용성이 높아졌습니다. 내부적으로 ForkJoinPool을 활용하여 멀티 코어 프로세서를 효율적으로 사용하게 해 주며, 병렬 스트림을 사용하면 별도의 스레드 관리 없이 병렬 연산이 가능합니다. 람다를 통해 메서드를 일급 객체로 취급할 수 있으며, 스트림 API는 데이터 흐름을 함수형 방식으로 처리하도록 도와줍니다.

  • 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능 (자료의 추상화)
  • 배열, 컬렉션에 동일한 연산이 수행되어 일관성 있는 처리가 가능
  • 한 번 생성하고 사용한 스트림은 재사용할 수 없음
  • 스트림 연산은 기존 자료를 변경하지 않음 (다른 메모리에서 연산 수행)

참고

https://www.youtube.com/watch?v=4ZtKiSvZNu4
https://inpa.tistory.com/entry/%E2%98%95-%ED%95%A8%EC%88%98%ED%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-API#runnable_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4
https://dwaejinho.tistory.com/entry/Java-Lambda-Stream-%EB%8F%84%EC%9E%85-%EB%B0%B0%EA%B2%BD%EA%B3%BC-%EC%9B%90%EB%A6%AC-%ED%8C%8C%ED%95%B4%EC%B9%98%EA%B8%B0#1.1%20%EB%9E%8C%EB%8B%A4%EC%9D%98%20%EB%8F%84%EC%9E%85%20%EB%B0%B0%EA%B2%BD-1

This post is licensed under CC BY 4.0 by the author.