💥 개요
우테코 3주차 코드리뷰 진행 중 Lotto를 파라미터로 받은 개수만큼 새로운 객체를 생성하는 코드를 만드는데, 더 좋은 코드를 추천해주셔서 Stream의 활용과 심화에 대해 알아야겠다. 라고 생각했다.

1. Stream 생성하기
Java에서 Stream을 생성하는 방법은 다양합니다. 컬렉션, 배열, 특정 범위의 숫자 등에서 Stream을 생성할 수 있습니다.
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
2. Stream 가공하기(중간연산)
Stream을 가공하는 중간 연산에는 여러 가지가 있습니다. 이들은 Stream을 변형하지만, 최종 연산이 호출되기 전까지는 실행되지 않습니다.
[ 필터링 - Filter ]
특정 조건에 맞는 요소만 추출합니다.
stream.filter(s -> s.startsWith("a"));
[ 데이터 변환 - Map ]
각 요소에 함수를 적용하여 변환합니다.
stream.map(String::toUpperCase);
[ 정렬 - Sorted ]
주어진 Comparator에 따라 Stream의 요소를 정렬합니다.
stream.sorted(Comparator.naturalOrder());
[ 중복 제거 - Distinct ]
중복된 요소를 제거합니다.
stream.distinct();
[ 특정 연산 수행 - Peek ]
각 요소에 대해 추가적인 연산을 수행합니다. 주로 디버깅에 유용합니다.
stream.peek(System.out::println);
[ 원시 Stream <-> Stream ]
기본형 타입의 Stream과 객체형 Stream 간의 변환입니다.
IntStream intStream = stream.mapToInt(String::length);
3. Stream 결과 만들기(최종 연산)
Stream의 최종 연산으로 결과를 도출합니다. 이 연산을 수행한 후에는 Stream을 재사용할 수 없습니다.
[ 최댓값/최솟값/총합/평균/갯수 - Max/Min/Sum/Average/Count ]
Stream의 요소에 대한 다양한 통계를 제공합니다.
stream.count();
[ 데이터 수집 - collect ]
Stream의 요소를 다양한 방식으로 수집합니다.
1. Collectors.toList()
stream.collect(Collectors.toList());
2. Collectors.joining()
stream.collect(Collectors.joining(", "));
3. Collectors.averagingInt(), Collectors.summingInt(), Collectors.summarizingInt()
stream.collect(Collectors.averagingInt(String::length));
4. Collectors.groupingBy()
stream.collect(Collectors.groupingBy(String::length));
5. Collectors.partitioningBy()
stream.collect(Collectors.partitioningBy(s -> s.length() > 2));
[ 조건 검사 - Match ]
특정 조건이 Stream의 모든 요소에 대해 참인지, 하나라도 참인지, 모두 거짓인지 검사합니다.
stream.allMatch(s -> s.contains("a"));
[ 특정 연산 수행 - forEach ]
각 요소에 대해 연산을 수행합니다.
stream.forEach(System.out::println);
출처
https://mangkyu.tistory.com/114
[Java] Stream API의 활용 및 사용법 - 기초 (3/5)
1. Stream 생성하기 앞서 설명한대로 Stream API를 사용하기 위해서는 먼저 Stream을 생성해주어야 한다. 타입에 따라 Stream을 생성하는 방법이 다른데, 여기서는 Collection과 Array에 대해서 Stream을 생성하
mangkyu.tistory.com
'Languege > Java & Spring' 카테고리의 다른 글
| [Java] jdk 17 - toList의 함정 (0) | 2024.11.14 |
|---|---|
| [String Constant Pool] Heap? PermGen? 오해와 진실 (1) | 2024.01.07 |
| RestAssured session 사용시 default value 저장 (0) | 2023.05.17 |
| Junit5 상속관계에서 BeforeEach 순서 (0) | 2023.05.17 |