전체 글29 [모던 자바 인 액션] 스트림으로 데이터 수집 컬렉터란 스트림 API의 최종 연산 중 collect라는 메소드가 있는데, 이 collect는 컬렉터를 인자로 받아서 내부적으로 리듀싱 연산을 수행한다. 이 책에서 자주 사용하는 toList는 각 요소를 조회하면서 리스트에 값을 추가하는 리듀싱 연산을 하여 리스트를 반환한 것이다. 자바에서 미리 정의된 컬렉터 1. counting스트림의 개수를 세는 컬렉터이다. 첫번째 예제는 counting 컬렉터를 사용한 것이고 두번째 예제는 스트림 API에서 제공되는 count 메소드이다. long count = menu.stream().collect(Collectors.counting());long count = menu.stream().count(); 2. maxBy, minBymaxBy, minBy는 com.. 2025. 4. 25. [모던 자바 인 액션] 스트림 활용 필터링 1. filterfilter메서드는 프레디케이트를 인자로 받는 메서드로 프레디케이트를 만족하는 요소를 반환한다.List vegetarianMenu = menu.stream().filter(Dish::isVegetarian).collect(toList()); 2. distinctdistinct는 중복을 제거할 때 사용된다.List numbers = Arrays.asList(1, 2, 3, 4, 1, 2, 7, 4);numbsers.filter(i -> i % 2 == 0).distinct().forEach(System.out.printIn); 스트림 슬라이싱 1. takeWhiletakeWhile은 정렬된 요소에서 조건을 만족하는 요소들을 슬라이싱하는 기능이다. 정렬된 요소를 기반으로 동작하기 .. 2025. 4. 24. [모던 자바 인 액션] 스트림이란 스트림이란 스트림 API는 자바 8 API에 새로 추가된 기능으로, 이를 사용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 또한 스트림을 사용하면 멀티스레드 코드를 작성하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 즉, 공짜로 병렬성을 얻을 수 있다. 스트림 API은 선언형, 조립할 수 있음, 병렬화라는 특징을 가지고 있다. 여기서 스트림이란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소로 정의할 수 있다. 스트림에는 파이프라이닝과 내부 반복이라는 특징을 가진다. 파이프라이닝은 스트림 연산끼리 연결해서 커다란 파이프라인을 구성할 수 있는 것을 의미하고, 내부반복은 우리가 반복자를 명시적으로 사용하는 것과 달리 반복자의 사용 없이 스트림 내부에서 반복을 처리하는 것을 의미한다. 스.. 2025. 4. 24. [모던 자바 인 액션] 람다 표현식 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명함수를 단순화한 것을 말한다. 람다의 특징으로는 익명, 함수, 전달, 간결성이 있다. 보통의 메서드와는 달리 익명이고, 메서드와 달리 클래스에 소속되지 않으며, 람다 자체를 메서드의 인수로 전달하거나 변수로 관리할 있고, 익명 클래스보다 더 간결하다. # 람다를 사용하지 않은 코드Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); }};# 람다를 사용한 코드Comparator byWeight = (Apple a1, Apple a2) -> a1.getWe.. 2025. 4. 17. 이전 1 2 3 4 5 6 7 8 다음