자바 컬렉션이나 배열의 원소를 가공할 때 for, foreach로 가공해서 사용 > 귀찮음
자바 8부터 Stream을 사용해서 람다함수 형식으로 간결하게 요소를 처리할 수 있다.
Stream API로 요소를 가공 후 collect 함수를 사용해 결과를 리턴 받는다.
[배열 원소 가공 방법]
- map : 스트림 내 요소들에 대해 함수를 적용 > 결과 반환 (새로운 값으로 매핑)
- filter : 스트림 내 요소들을 조건에 따라 필터링
- sorted : 스트림 내 요소들을 정렬
- map()
List<String> humanNames = humans.stream().map(h -> h.getName())
.collect(Collectors.toList()); // 매핑 결과 > 리스트로 반환
// 결과 출력
for (String humanName : humanNames) {
System.out.print(humanName + " ");
}
- 중복 제거 .distinct()
List<String> names = humans.stream()
.map(h -> h.getName())
.distinct() // 중복 제거
.collect(Collectors.toList());
for (String name : names) {
System.out.print(name + " ");
}
- 입력 스트림을 정수로 매핑 > Array로 반환
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = Arrays.stream(br.readLine().split(""))
.mapToInt(Integer::parseInt)
.toArray();
- filter: 조건에 해당하는 원소만 필터링해서 스트림 생성
List<String> names = humans.stream()
.filter(h -> h.getName().length() > 3)
.collect(Collectors.toList());
- sorted()
// 오름차순
List<String> names = humans.stream()
.map(h -> h.getName())
.sorted()
.collect(Collectors.toList());
// 내림차순
List<String> names = humans.stream()
.map(h -> h.getName())
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
'CS' 카테고리의 다른 글
[CS 스터디] 대칭키, 공개키(비대칭키) (0) | 2023.06.30 |
---|---|
[CS 스터디] HTTP, HTTPS (0) | 2023.06.30 |
[Java] 문자 -> 문자열 변환하기, 문자열 내 특정 문자 제거하기 replaceAll() (0) | 2023.06.26 |
[Java] StringBuilder (0) | 2023.06.26 |
[Java] EOF까지 입력 받기 (0) | 2023.06.26 |