모던 자바 인 액션 스터디 5

모던 자바 인 액션 - 6장 스트림으로 데이터 수집

6.1 컬렉터란 무엇인가? Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정 함수형 프로그래밍은 ‘무엇'을 원하는지 직접 명시할 수 있어 어떤 방법으로 이를 얻을지는 신경 쓸 필요가 없다. 이는 다수준으로 그룹화를 수행할 때 명령형 프로그래밍과 함수형 프로그래밍의 차이점이 더욱 두드러진다. 명령형 코드에서는 문제를 해결하는 과정에서 다중 루프와 조건문을 추가하며 가독성과 유지보수성이 떨어지지만 함수형 프로그래밍에서는 컬렉터를 쉽게 추가할 수 있다. 강점 collect로 결과를 수집하는 과정을 간단하면서도 유연한 방식으로 정의할 수 있다 명령형 프로그래밍에서 직접 구현해야 했던 작업이 자동으로 수행 collect에서는 리듀싱 연산을 이용해서 스트림의 각 요소를 방문하면서 컬렉터..

모던 자바 인 액션 - 5장 스트림 활용

스트림 활용 지난 장에서 외부 반복을 내부 반복으로 바꾸는 방법을 살펴봤습니다. 데이터를 어떻게 처리할지는 스트림 API가 관리 → 편리하게 데이터관련 작업을 할 수 있다. 스트림 API 내부적으로 다양한 최적화가 이루어질 수 있다. 스트림 API는 내부반복 뿐 아니라 코드를 병렬로 실행할지 결정 가능 이러한 일은 단일 스레드로 구현하는 외부 반복으로는 달성할 수 없습니다. 이번 파트는 스트림 API가 지원하는 다양한 연산을 살펴볼 것입니다. 1. 필터링 스트림의 요소를 선택하는 방법 두가지 프레디케이트 필터링 방법과 고유 요소만 필터링 하는 방법을 알아봅시다. 1.1 프레디케이트 필터링 스트림 인터페이스는 filter 메서드를 지원 프레디케이트를 인수로 받아 프레디케이트와 일치하는 모든 요소를 포함하는..

모던 자바 인 액션 - 4장 스트림 소개

스트림 소개 거의 모든 자바 애플리케이션은 컬렉션을 만들고 처리하는 과정을 포함합니다. 대부분의 프로그래밍 작업에 사용되며, 컬렉션으로 데이터를 그룹화하고 처리할 수 있습니다. 비즈니스 로직상 컬렉션에 대해 특정 카테고리로 그룹화 하던가, 특정 키워드를 사용하여 원하는 결과를 찾는 연산을 요구하는 작업이 있을 수 있습니다. 대부분 데이터베이스에서는 선언형으로 이와 같은 연산을 표현할 수 있습니다. 예를 들어 ‘SELECT name FROM cars WHERE price < 2500’이라는 문장같이 2500 이하인 차량을 선택하라는 SQL질의를 만들 수 있습니다. 이처럼 자동차의 속성을 이용하여 어떻게 필터링 할 것인지는 구현할 필요가 없습니다. 어떻게 구현해야 할지 명시할 필요가 없고 구현은 자동으로 제..

모던 자바 인 액션 - 3장 람다 표현식

람다표현식 이번에는 람다 표현식을 어떻게 만드는지, 어떻게 사용하는지, 어떻게 코드를 간결하게 만들 수 있는지 설명하는 장입니다. 또한 자바 8 API에 추가된 중요한 인터페이스와 형식 추론 등의 기능도 확인하며, 마지막으로 람다 표현식과 함께 위력을 발휘하는 새로운 기능인 메서드 참조를 설명하겠습니다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있습니다. *람다의 특징 익명 보통의 메서드와 달리 이름이 없어 익명이라 표현합니다. 구현해야 할 코드에 대한 걱정거리가 줄어든다. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수..

모던 자바 인 액션 - 2장 동작 파라미터화 코드 전달하기

*책 예제를 그대로 따라치는게 아닌 예제를 직접한번 만들어 보면서 학습을 해봤습니다. 동작 파라미터화 코드 전달하기 변화하는 요구사항은 소프트웨어 엔지니어링에서 피할 수 없는 문제! 시시각각 변하는 사용자의 요구 —> 동작 파라미터화 효과적인 대응 이 가능하다. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미, 이 코드 블록의 실행은 나중으로 미뤄진다. 어떻게 실행되는지 예제를 통해서 알아봅시다. 설명을 돕기 위한 기본셋팅입니다. enum Color { WHITE, BLACK, RED, BLUE } enum Model { GV70, GV80, G70, G80, G90 } class Car{ private int price; private Color color; private..