[java] list.sort() 와 Collections.sort(list)

세상을 바꾸는 개발자·2023년 4월 27일
0

프로그래머스 - 귤 고르기 문제를 풀다가 궁금증이 생겨서 알아보았다.

결론은 list.sort(Compartor.naturalOrder())Collections.sort(list)는 같은 결과를 출력한다.

list.sort()

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();

        for(int i=0; i<tangerine.length; i++){
            map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) +1);
        }

        List<Integer> list = new ArrayList<>(map.keySet());
        list.sort((o1, o2) -> map.get(o2) - map.get(o1)); //list.sort() 사용

        int i=0;
        while(k>0){
            k -= map.get(list.get(i));
            answer++;
            i++;
        }

        return answer;
    }
}
  • list.sort() 메서드는 파이썬의 내장 리스트에 대한 메서드이다.
  • 자바에서 list.sort()를 사용하려면, java.util.List 인터페이스를 구현하는 리스트 객체에서 사용할 수 있다.
    이는 자바 8부터 추가된 기능으로, 리스트 객체에서 sort() 메서드를 호출하여 정렬할 수 있다.
  • 정렬 기준은 람다표현식을 이용하여 지정한다.


Collections.sort()

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;

        Map<Integer, Integer> map = new HashMap<>();

        for(int i=0; i<tangerine.length; i++){
            map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) +1);
        }

        List<Integer> list = new ArrayList<>(map.keySet());
        Collections.sort(list, new Comparator<Integer>() { //Collections.sort() 사용
            @Override
            public int compare(Integer o1, Integer o2) {
                return map.get(o2) - map.get(o1);
            }
        });

        int i=0;
        while(k>0){
            k -= map.get(list.get(i));
            answer++;
            i++;
        }

        return answer;
    }
}
  • Collections.sort()는 자바의 java.util.Collections 클래스에 포함된 메서드이다.
  • 자바에서 제공하는 다양한 자료형의 정렬에 사용된다.
    이는 객체를 정렬하는데에도 사용할 수 있으며, 정렬 알고리즘과 비교자(Comparator)를 선택할 수 있다.
profile
초심 잃지 않기

0개의 댓글

관련 채용 정보