Chapter01/Java

[ java ] Stream_예시코드

EmmaDev_v 2024. 5. 28. 22:03

filter()
"조건에 맞는 요소 필터링" 

 

짝수만 남기기 

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


map()
"각 요소 변환"


각 단어를 대문자로 변환

List<String> words =  Arrays.asList("java", "stream", "example");
List<String> upperCaseWords = words.stream()
                                    .map(String::toUpperCase)
                                    .collect(Collectors.toList());



flatMap()

"중첩된 스트림 평평하게 만들기"


여러 리스트를 하나의 리스트로 합치기

List<List<String>> fruits = Arrays.asList(
    Arrays.asList("apple","banana"),
    Arrays.asList("cherry", "watermelon")
);
List<String> flatFruitsList = listOfLists.stream()
                                    .flatMap(List::stream)
                                    .collect(Collectors.toList());



reduce()
"하나로 합치기"


요소 모두 더하기, 첫번쨰 인자인 0은 초기값.

int sum = Arrays.asList(1, 2, 3, 4, 5).stream()
                .reduce(0,(a,b) -> a,b);





collect()
"스트림을 컬렉션으로 변환"

1. list로 바꿈

List<String> words = Arrays.asList("apple", "banana", "cherry");
List<String> wordList = words.stream()
                             .collect(Collectors.toList());



결과

["apple", "banana", "cherry"]




2. set은 중복을 허용하지않음

List<String> words = Arrays.asList("apple", "banana", "cherry", "apple");
Set<String> wordSet = words.stream()
                           .collect(Collectors.toSet());



결과

["apple", "banana", "cherry"]




3. joining(", ")은 각 요소를 쉼표와 공백(", ")으로 구분하여 하나의 문자열로 결합

List<String> words = Arrays.asList("apple", "banana", "cherry");
String result = words.stream()
                     .collect(Collectors.joining(", "));



결과

"apple, banana, cherry"




4. 단어의 첫 번째 문자를 기준으로 그룹화하여 Map<character, list> 형태로 반환

List<String> words = Arrays.asList("apple", "banana", "cherry", "avocado");
Map<Character, List<String>> groupedByFirstChar = words.stream()
                                                       .collect(Collectors.groupingBy(word -> word.charAt(0)));



결과

{
    'a'=[apple, avocado],
    'b'=[banana],
    'c'=[cherry]
}

 

 

5. partitioningBy()는 조건을 기준으로 두 그룹으로 나누며,

짝수와 홀수로 구분하여 Map<boolean, list<integer="">> 형태로 반환

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Map<Boolean, List<Integer>> partitioned = numbers.stream()
                                                 .collect(Collectors.partitioningBy(n -> n % 2 == 0));

 


결과

{
    false=[1, 3, 5],
    true=[2, 4, 6]
}



sorted()
"오름차순으로 정렬"

List<Integer> numbers = Arrays.asList(5, 3, 8, 1);
List<Integer> sortedNumbers = numbers.stream()
                                     .sorted()
                                     .collect(Collectors.toList());




내림차순으로 정렬하려면 Comparator.reverseOrder()

반응형