728x90
반응형
Stream method
HashMap의 값을 정렬하는 과정에서 많은 메서드가 쓰여서 정리해 본다.
주로 Stream Class의 method들이다.
Map<Integer, Integer> map = new HashMap<>();
map.put(1, 3);
map.put(2, 2);
map.put(3, 5);
map.put(4, 1);
map.entrySet().stream()
.sorted((v1, v2) -> v2.getValue().compareTo(v1.getValue()))
.limit(k)
.mapToInt(Entry::getKey)
.toArray();
- 1. sorted(Comparator c)와 compareTo()
- .sorted((v1, v2) -> v2.getValue().compareTo(v1).getValue()) 일 때
- 내림차순 정렬: v2.getValue().compareTo(v1.getValue())
- 오름차순 정렬: v1.getValue().compareTo(v2.getValue())
- 2. Comparator
- Stream 메서드는 아니지만 자주 같이 쓰인다.
- custom comparator를 만들 때 아래 기준에 맞춰서 return 해준다.
- return -1: 첫 번째가 작다. 첫 번째가 두 번째보다 앞에 위치.
- return 1: 첫 번째가 크다. 첫 번째가 두 번째보다 뒤에 위치.
- return 0: 두 객체가 같다. 위치를 바꾸지 않는다.
// 문자열의 길이 비교 (오름차순)
Collections.sort(strings, (s1, s2) -> {
if (s1.length() < s2.length()) {
return -1; // s1이 s2보다 짧을 때, s1이 앞에 위치
} else if (s1.length() > s2.length()) {
return 1; // s1이 s2보다 길 때, s1이 뒤에 위치
} else {
return 0; // s1과 s2의 길이가 같을 때, 순서 유지
}
});
- 3. limit(long maxSize)
- Stream에서 maxSize 개수만큼 데이터를 가져와서 새로운 스트림을 생성하고 리턴한다.
- 개수만큼 건너뛰는 skip() 도 있다.
- 4. mapToInt()
- 스트림을 IntStream으로 변환한다.
- 5. toArray()
- 스트림을 array로 바꿔준다.
728x90
느낀 점
- Stream에는 정말 다양한 method들이 있다. 알수록 이득이니 많이 알아두도록 하자.
다음에 학습할 것
- 더 많은 Stream method
반응형
코테에서는 메서드 이름을 다 외우고 써야 하므로 완벽하게 외우자.
728x90
반응형
'Club > 99클럽 코테 스터디 2기' 카테고리의 다른 글
99클럽 코테 스터디 31일차 TIL 병합 정렬 구현 (0) | 2024.06.19 |
---|---|
99클럽 코테 스터디 30일차 TIL 병합 정렬 (0) | 2024.06.18 |
99클럽 코테 스터디 29일차 TIL 순열과 조합 (0) | 2024.06.17 |
99클럽 코테 스터디 28일차 TIL 투 포인터 (0) | 2024.06.16 |
99클럽 코테 스터디 27일차 TIL printf (1) | 2024.06.15 |
댓글