자바 8에서 가장 큰 변화가 일어남.사과 목록을 무게순으로 정려라는 자바 8 이전 코드자바 8에서는 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공한다.자바 8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용이라는 두 가지 요구 사항을 기반으로 한다.스트
동작 파라미터화 를 이용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다.이는 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 이 코드 블록은 나중에 프로그램에서 호출한다. 즉, 코드 블록의 실행은 나중으로 미뤄진다.동작 파라미터화를 추가하려면
람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것익명: 보통의 메서드와 달리 이름이 없으므로함수: 메서드처럼 특정 클래스에 종속되지 않으므로전달: 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있으므로간결성: 익명 클래스처럼 많은 자질구레한 코
스트림 을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 또한 멀티스레드 코드를 구현하지 않아도 데이터를 병렬로 처리할 수 있다.stream()을 parallelStream()으로 바꾸면 위의 코드를 멀티코어 아키텍처에서 병렬로 실행할 수 있다.filter(o
스트림의 요소를 선택하는 방법, 즉 프레디케이트 필터링 방법과 고유 요소만 필터링하는 방법을 배운다.스트림 인터페이스는 filter 메서드를 지원하는데, 해당 메서드에서는 프레디케이트(불리언을 반환하는 함수)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는
명령형 코드에서는 다중 루프와 조건문을 추가하며 가독성과 유지보수성이 크게 떨어진다. 함수형 프로그래밍에서는 필요한 컬렉터를 쉽게 추가할 수 있다.함수형 API의 장점으로 높은 수준의 조합성과 재사용성을 꼽을 수 있다.collect에서는 리듀싱 연산을 이용해서 스트림의
외부 반복을 내부 반복으로 바꾸면 네이티브 자바 라이브러리가 스트림 요소의 처리를 제어할 수 있다.자바 7은 쉽게 병렬화를 수행하면서 에러를 최소화할 수 있도록 포크/조인 프레임워크기능을 제공한다.7장에서는 스트림으로 데이터 컬렉션 관련 동작을 얼마나 쉽게 병렬로 실행
Arrays.asList() 팩토리 메서드를 이용하여 요소를 간단하게 추가할 수 있다.고정 크기의 리스트를 만들었기 때문에 요소를 갱신할 수는 있지만 새로운 요소를 추가하거나 요소를 삭제할 순 없다. 새로운 요소를 추가하면 UnsupportedOperationExcep
람다 표현식을 이용한 코드는 다양한 요구사항 변화에 대응할 수 있도록 동작을 파라미터한다.코드 가독성이 좋다는 것은 어떤 코드를 다른 사람도 쉽게 이해할 수 있음을 의미한다.익명 클래스를 람다 표현식으로 리팩터링하기람다 표현식을 메서드 참조로 리팩터링하기명령형 데이터
언어의 주요 목표는 메시지를 명확하고, 안정적인 방식으로 전달하는 것이다.DSL(도메인 전용 언어)는 특정 도메인을 대상으로 만들어진 특수 프로그래밍 언어이다.내부적 DSL에서는 적절하게 클래스와 메서드를 노출하는 과정이 필요하다. 외부 DSL은 DSL 문법 뿐 아니라
에러의 근원이다.코드를 어지럽힌다.아무 의미가 없다.자바 철학에 위배된다.형식 시스템에 구멍을 만든다.자바 8에서는 ‘선택형값’ 개념의 영향을 받아서 java.util.Optional<T> 라는 새로운 클래스를 제공한다.Optional은 선택형값을 캡슐화하는 클래