Books/Modern Java In Action

Books/Modern Java In Action

[모던 자바 인 액션] Chapter7. 병렬 스트림

스트림을 사용하면 병렬로 작업을 간편하게 할 수 있습니다. 동기화, 스레드, 생성 등 어떤것도 신경쓸 필요가 없습니다. 기존 스트림 public long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } 병렬 스트림 public long parallelSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .parallel() .reduce(0L, Long::sum); } 간단히 parallel()만 호출하면 스트림이 알아서 병렬 처리해 줍니다! 반대로 sequential() 메서드는 병렬 스트림을 순차 스트림으로 바꾸는 함수..

Books/Modern Java In Action

[모던 자바 인 액션] Chapter5. 함수형 데이터 처리

기본형 특화 스트림 스트림API는 박싱 비용을피할 수 있도론 각 기본형에 특화된 스트림을 제공합니다. IntStream, LongStrea, DoubleStream이 있습니다. 스트림을 특화 스트림으로 변환할 때는 mapToInt, mapToDouble, mapToLong 세가지 메서드를가장 많이 사용합니다. int calories = menu.stream() .mapToint(Dish::getCalories) .sum(); 각각의 인터페이스는 sum, max, min 같이 자주 사용ㅎ되는 리듀싱 연산 메서드가 있습니다. 필요할때마다 객체 스트림으로 복원하는기능도 제공합니다. 기본형 특화 스트림은 오직 박싱과정에서 일어나는 효율성과 관련이 있으며 스트림에 추가 기능을 제공하지 않습니다! 상태 없는 연산,..

Books/Modern Java In Action

[모던 자바 인 액션] Chapter4. 스트림 vs 컬렉션

스트림 vs 컬렉션 데이터를언제 계산하느냐가 컬렉션과 스트림의 가장 큰 차이입니다. 컬렉션은 현재 자료구조가 포함하는 모든 값을 메모리에 저장하는 자료구조 입니다. 즉, 컬렉션의 모든 요소는 컬렉션에 추가하기 전에 계산되어 있어야 합니다. 스트림은 이론적으로 요청할때만 요소를 계산하는 고정된 자료구조 입니다. (스트림에 요소를추가하거나 스트림에서 요소를 제거할 수 없습니다.) 사용자가 요청하는 값만 스트림에서 추출한다는 것이 핵심입니다. 결과적으로 스트림은 생산자와 소비자 관계를 형성합니다. 또한 스트림은 게으르게 만들어지는컬렉션과 같습니다. 사용자가 데이터를 요청할때만 값을 계산하기 때문입니다. 반면 컬렉션은 적극적으로 생성됩니다. (사용자가 요청하기 전에 값을 전부 계산합니다.) 딱 한번만 탐색할 수..

Books/Modern Java In Action

[모던 자바 인 액션] Chapter4. 스트림 소개

스트림은 자바 8 API에 새로 추가된 기능입니다. 스트림을 이용하면 선언형(코드 대신 질의로 표현)으로 컬렉션 데이터를 처리할 수 있습니다. 간단하게 컬렉션 반복은 멋있게 처리하는 놈이라고 생각하면 됩니다! 왜나하면 멀티스레드 코드를구현하지 않아도 데이터를 병렬로 처리할 수 있기 때문입니다 그럼 바로 for문과 스트림을 비교하는 코드를 작성해 보겠습니다. 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 예제입니다. For 반복문으로 public class HighCaloriesNames_Forloop { public static void main(String[] args) { final List dishes = Dish.menu; List lowCaloricDishes = new Arr..

Sol b
'Books/Modern Java In Action' 카테고리의 글 목록