java stream 간단한 사용법 정리
필터링(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] 매핑(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] 정렬(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] 제한(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] 건너뛰기(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] 리듀싱(reducing)Stream은 컬렉션의 모든 요소를 하나로 리듀싱하는 기능을 제공합니다. reduce() 메서드를 사용하여 컬렉션의 모든 요소를 하나의 값으로 결합할 수 있습니다.// 예시 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .reduce(0, Integer::sum); // sum: 15 수집(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] 그룹핑(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]} 병렬 처리(parallel processing)Stream은 병렬 처리를 지원하여 대용량 데이터를 처리할 때 유용합니다. parallel() 메서드를 사용하여 병렬 처리할 수 있습니다.// 예시 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.parallelStream() .reduce(0, Integer::sum); // sum: 15