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