아직 어떻게 실행할 것인지 결정하지 않은 코드 블록. 나중에 프로그램에서 호출해서 사용하는 것. 즉, 코드 블럭의 실행이 나중으로 미뤄진다. 요구 사항은 언제든 변화할 수 있기 때문에 이처럼 코드 블럭의 실행을 나중으로 미루면 효과적으로 대응할 수 있다.메서드의 인자로
깔끔한 코드로 동작을 구현하고 전달하는 기능. 이름이 없는 함수면서 메서드를 인수로 전달할 수 있다. 익명 함수의 일종. 메서드로 전달할 수 있는 익명 함수를 단순화한 것. 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있
데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소연속된 요소: 스트림은 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스를 제공한다. 컬렉션은 데이터 저장 및 접근 연산이 주 기능이지만, 스트림은 표현 계산식(filter, sorted, map)이 주를
스트림의 요소를 선택하는 방법. Predicate(boolean을 반환하는 함수)를 인수로 받아서 Predicate와 일치하는 모든 요소를 포함하는 스트림을 반환한다.distinct: 고유 요소로 이루어진 스트림을 반환(중복을 제거)하는 메서드(hascCode와 equ
함수형 프로그래밍은 무엇을 원하는지 직접 명시할 수 있기 때문에 어떤 방법으로 이를 얻을지는 신경 쓸 필요가 없다.Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. 함수형 API의 장점은 높은 수준의 조합성과 재사용성이다. collec
컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성된다. 병렬 스트림이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림이다. 병렬 스트림을 이용하면 모든 멀티코어 프로세서가 각각의 청크를 처리하도록 할당할 수 있다.paral
기존에는 적은 요소를 포함하는 List나 Set을 만들때 아래와 같이 생성하였다.Arrays.asList는 고정 크기의 리스트이므로 갱신은 가능하지만, 요소의 추가나 삭제가 불가능하다.자바 9부터는 작은 리스트, 집합, 맵을 쉽게 만들 수 있는 팩토리 메서드를 제공한다
리팩터링, 테스팅, 디버깅
값이 없는 상황을 어떻게 처리할까? 보수적인 자세로 NullPointerException 줄이기 null이 발생할 수 있는 곳에 null 확인코드를 추가해서 처리할 수 있다. null 확인 코드 때문에 들여쓰기 수준이 증가하고 가독성도 좋지않다. 어떤 곳에서 nu
기존에는 Date 클래스 하나로 날짜와 시간 관련 기능을 제공했다. Date클래스는 특정 시점을 날짜가 아닌 밀리초 단위로 표현한다. 1900년을 기준으로 하며, 달(month)를 나타내는 인덱스는 0부터 시작하는 등의 모호한 설계로 사용하기 좋지 않았으며 결과도 직관
기존에 존재하던 인터페이스에 새로운 메서드를 추가하면 인터페이스를 구현하는 모든 클래스에 메서드 구현을 해줘야한다. 이런 문제를 해결하기 위해 자바 8부터 정적 메서드 사용과 디폴트 메서드 를 사용할 수 있게 되었다. 메서드 구현을 포함하는 인터페이스를 정의할 수 있게
컴퓨터 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙
쉽게 유지 보수할 수 있는 프로그램이란 시스템의 구조를 이해하기 쉽게 클래스 계층으로 반영하는 프로그램이다. 프로그램 구조는 아래의 2가지 도구로 평가할 수 있다.결합성: 시스템의 각 부분의 상호 의존성을 가리키는 것응집성: 시스템의 다양한 부분이 서로 어떤 관계를 갖