콘텐츠로 이동

2021 03 16

2021-03-16

Java 8 Lambda, Stream API

  • 함수형 프로그래밍? - 기존 프로그래밍: 작업을 어떻게 수행할 것인지, 데이터를 "어떻게(HOW)" 처리하는 지에 집중! - 함수형 프로그래밍: 구체적인 작업 방식은 라이브러리가 결정. "무엇(WHAT)"을 수행하는지에 집중 - side-effect가 없음! - 대입문이 없어, 변수에 값 할당되면 절대 못바꿈 - 변수의 변형이 없음! - 각 함수들은 인자를 받고, 그에 따른 결과를 반환한다. 내부적으로 어떤 상태 X - 오로지 함수에서 input과 return 값이 중요! - 문제를 작은 단위로 쪼개는 방법을 익히기!
  • 장점 - 멀티코어와 동시성 제어 - Java 8에서 간결한 코드, 멀티코어 프로세서의 쉬운 활동을 보장할 수 있음 - stream().parallel() - Immutable value를 활용하자 - 값이 변경되는 객체는 멀티 스레드에서 위험! - 불변을 보장해 버그를 줄이자!
    - 함수형 프로그래밍에서는 함수가 "1급 시민" - 함수를 인자로, 반환값으로, 자료구조에 저장하는 방식으로 사용할 수 있다!
  • Lambda 표현식 - 메서드로 전달할 수 있는 익명함수 - 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트 등 가짐