본문 바로가기

전체 글34

[자바] 스트림을 이용한 데이터 수집 - 그룹화 9.1 그룹화 1. Collectors.groupingBy 데이터를 하나의 카테고리를 주제로 분류하고 싶을 경우에는 Collectors의 groupingBy 메서드를 사용하면 됩니다. Map bookesByCategory = bookshelf.stream().collect(groupingBy(Book::getCategory)); 위와 같이 코드를 작성하면 Category 종류별로 관련된 책들의 리스트를 조회할 수 있습니다. 그러나 페이지에 따라 책이 가벼운지 무거운지 알고 싶은 경우에는 조금 더 복잡한 코드를 작성해야 합니다. Map booksByThickness = bookshelf.stream() .collect(groupingBy(book -> { if (book.getPage() < 100) re.. 2023. 10. 10.
[자바] 스트림을 이용한 데이터 수집 - Collectors Collectors란? Collectors는 스트림을 처리하고 요소를 수집하는 데 사용되는 유틸리티 클래스로, 해당 클래스의 메서드들을 사용하면 스트림을 쉽게 처리할 수 있습니다. 8.1 Collectors.counting()과 count() Stream 요소의 개수를 구하는 방법은 두 가지가 있습니다. List list = Arrays.asList(1, 2, 3, 4, 5); long count = list.stream().filter(i -> i % 2 == 0).count(); List list = Arrays.asList(1, 2, 3, 4, 5); long count = list.stream().filter(i -> i % 2 == 0).collect(Collectors.counting()); .. 2023. 10. 5.
[자바] 스트림(Stream) 활용 7.1 스트림 슬라이싱 1. takeWhile의 활용 takeWhile 메서드는 Stream의 각 요소 중 조건을 만족하지 않는 첫 번째 요소를 만나면 현재까지의 요소를 반환합니다. 정렬된 경우 import java.util.List; import java.util.Arrays; public class Main { public static void main(String[] args) { List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List result = numbers.stream() .takeWhile(n -> n < 6) .toList(); System.out.println(result); // [1, 2, 3, 4, 5] } } 정렬되.. 2023. 10. 5.
데이터 컬렉션의 반복 처리 - 스트림(Stream) 스트림이란? 데이터 컬렉션 반복 처리를 간결하게 하면서, 데이터의 병렬 처리를 쉽게 제공하는 기능 5.1 스트림의 유용한 기능들 요소가 많이 포함된 컬렉션 처리의 성능을 높이기 위해서는 멀티코어를 활용해 병렬로 컬렉션의 요소를 처리해야 합니다. 하지만 병렬 처리 코드를 구현하는 것은 매우 어렵고, 디버깅 또한 복잡한 절차입니다. 이런 문제점을 해결하기 위해 자바 언어 설계자들이 스트림이라는 것을 만들었습니다. 우선 스트림이 사용되기 전에 사용되었던 코드를 살펴보겠습니다. List thinBooks = new ArrayList(); for (Book book : bookshelf) { if (book.getPage() < 500) { thinBooks.add(book); } } Collections.sor.. 2023. 9. 26.
람다 표현식을 더 간결하게 - 메서드 참조 메서드 참조란? 특정 메서드를 호출하는 람다의 축약형으로, 명시적 메서드명 참조를 통해 가독성을 높이는 역할을 한다. 4.1 메서드 참조의 기본 문법 지난 포스트에서 Consumer, Predicate, Function 등의 인터페이스에서 람다를 활용하는 방법에 대해 알아보았습니다. 람다 표현식이라는 문법 자체가 익명 함수의 축약형이지만, 가독성과 간결성을 더 높이는 방법이 있는데, 그것이 바로 메서드 참조를 이용하는 것입니다. 메서드 참조는 메서드의 이름 앞에 :: 구분자를 붙여서 사용합니다. Function getCategoryFunction = (Book book) -> book.getCategory(); 이 코드를 다음과 같이 변경할 수 있습니다. Function getCategoryFunctio.. 2023. 9. 25.
함수형 인터페이스를 통한 람다의 활용 다양한 함수형 인터페이스 3.1 Predicate @FunctionalInterface public interface Predicate { boolean test(T t); default Predicate and(Predicate 2023. 9. 24.