본문 바로가기
Club/99클럽 코테 스터디 2기

99클럽 코테 스터디 32일차 TIL Stream method 1

by ʚ⇜❅🎕̈❄⇝ɞ 2024. 6. 20.
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((v1v2) -> 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
반응형

댓글