Home
Younghwani
Cancel

[Effective Java] Item48. 스트림 병렬화는 주의해서 적용하라!

Item48. 스트림 병렬화는 주의해서 적용하라! Intro 주류 언어 중, 동시성 프로그래밍 측면에서 자바는 항상 앞서갔다. 처음 릴리즈된 1996년부터 스레드, 동기화, wait/notify를 지원했다. 자바 5부터 동시성 컬렉션인 java.util.concurrent 라이브러리와 실행자(Executor) 프레임워크를 지원했다. ...

[Effective Java] Item47. 반환 타입으로는 스트림보다 컬렉션이 낫다!

Item47. 반환 타입으로는 스트림보다 컬렉션이 낫다! Intro 원소 시퀀스, 즉 일련의 원소를 반환하는 메서드는 수없이 많다. 자바 7까지는 이런 메서드의 반환 타입으로 Collection, Set, List 같은 컬렉션 인터페이스 또는 Iterable이나 배열을 사용했다. 기본은 컬렉션 인터페이스를 사용한다. ...

[Effective Java] Item46. 스트림에서는 부작용 없는 함수를 사용하라!

Item46. 스트림에서는 부작용 없는 함수를 사용하라! Intro 스트림은 처음 봐서는 이해하기 어려울 수 있다. 원하는 작업을 스트림 파이프라인으로 표현하는 것조차 어려울지 모른다. 스트림은 그저 또 하나의 API가 아닌, 함수형 프로그래밍에 기초한 패러다임이다. 스트림이 제공하는 표현력, 속도, 병렬성을 얻으려면 ...

[Effective Java] Item45. 스트림은 주의해서 사용하라!

Item45. 스트림은 주의해서 사용하라! Intro 스트림 API는 다량의 데이터 처리 작업(순차적, 병렬적)을 돕고자 자바 8에 추가되었다. 스트림 API가 제공하는 추상적 개념은 두 가지다. 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표...

[Effective Java] Item44. 표준 함수형 인터페이스를 사용하라!

Item44. 표준 함수형 인터페이스를 사용하라! 자바라 람다를 지원하게 되면서 API 작성의 모범 사례가 크게 변했다. 예를 들어 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 메서드 패턴의 매력이 크게 줄었다. 이를 대체하는 현대적 방법? 같은 효과의 함수 객체를 받...

[Effective Java] Item43. 람다보다는 메서드 참조를 사용하라!

Item43. 람다보다는 메서드 참조를 사용하라! 람다가 익명 클래스보나 나은 점은 간결함! 그런데 자바엔 함수 객체를 람다보다 간결하게 만드는 방법이 있다? 그것은 바로 메서드 참조다. 람다, 메서드 참조 비교 // lambda map.merge(key, 1, (count, incr) -> co...

[Effective Java] Item42. 익명 클래스보다는 람다를 사용하라!

Item42. 익명 클래스보다는 람다를 사용하라! 예전에는 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스(드물게는 추상 클래스)를 사용했다. 이런 인터페이스의 인스턴스를 함수 객체하고 한다. 특정 함수 및 동작을 나타내는 데에 사용한다. Collections.sort(word, ne...