java stream 간단한 사용법 정리

java stream 간단한 사용법 정리

  1. 필터링(filtering)

    Stream은 컬렉션의 요소를 필터링하는 기능을 제공합니다. filter() 메서드를 사용하여 조건에 맞는 요소만 선택할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
                                    .filter(n -> n % 2 == 0)
                                    .collect(Collectors.toList());
// evenNumbers: [2, 4]

 

  1. 매핑(mapping)

    Stream은 컬렉션의 요소를 다른 값으로 변환하는 매핑 기능을 제공합니다. map() 메서드를 사용하여 각 요소를 원하는 값으로 변환할 수 있습니다.

// 예시

List<String> names = Arrays.asList("John", "Paul", "George", "Ringo");
List<Integer> nameLengths = names.stream()
                                  .map(String::length)
                                  .collect(Collectors.toList());
// nameLengths: [4, 4, 6, 5]

 

  1. 정렬(sorting)

    Stream은 컬렉션의 요소를 정렬하는 기능을 제공합니다. sorted() 메서드를 사용하여 요소를 정렬할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(5, 2, 1, 4, 3);
List<Integer> sortedNumbers = numbers.stream()
                                     .sorted()
                                     .collect(Collectors.toList());
// sortedNumbers: [1, 2, 3, 4, 5]

 

  1. 제한(limiting)

    Stream은 컬렉션의 요소를 제한하는 기능을 제공합니다. limit() 메서드를 사용하여 최대 요소 개수를 제한할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> limitedNumbers = numbers.stream()
                                      .limit(3)
                                      .collect(Collectors.toList());
// limitedNumbers: [1, 2, 3]

 

  1. 건너뛰기(skipping)
    Stream은 컬렉션의 요소를 건너뛰는 기능을 제공합니다. skip() 메서드를 사용하여 처음 몇 개의 요소를 건너뛸지 지정할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> skippedNumbers = numbers.stream()
                                      .skip(2)
                                      .collect(Collectors.toList());
// skippedNumbers: [3, 4, 5]

 

  1. 리듀싱(reducing)

    Stream은 컬렉션의 모든 요소를 하나로 리듀싱하는 기능을 제공합니다. reduce() 메서드를 사용하여 컬렉션의 모든 요소를 하나의 값으로 결합할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                 .reduce(0, Integer::sum);
// sum: 15

 

  1. 수집(collecting)

    Stream은 컬렉션의 요소를 수집하는 기능을 제공합니다. collect() 메서드를 사용하여 원하는 형태로 요소를 수집할 수 있습니다.

     

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Set<Integer> numberSet = numbers.stream()
                                .collect(Collectors.toSet());
// numberSet: [1, 2, 3, 4, 5]

 

  1. 그룹핑(grouping)

    Stream은 컬렉션의 요소를 그룹핑하는 기능을 제공합니다. groupingBy() 메서드를 사용하여 원하는 기준으로 요소를 그룹핑할 수 있습니다.

     

// 예시

List<String> names = Arrays.asList("John", "Paul", "George", "Ringo");
Map<Character, List<String>> namesByFirstLetter = names.stream()
                                                        .collect(Collectors.groupingBy(name -> name.charAt(0)));
// namesByFirstLetter: {J=[John], P=[Paul], G=[George], R=[Ringo]}

 

  1. 병렬 처리(parallel processing)

    Stream은 병렬 처리를 지원하여 대용량 데이터를 처리할 때 유용합니다. parallel() 메서드를 사용하여 병렬 처리할 수 있습니다.

// 예시

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
                 .reduce(0, Integer::sum);
// sum: 15