Java/코딩테스트

[JAVA] List<String> 정렬 (기본 정렬, 커스텀 정렬)

_JHS_ 2025. 2. 14. 13:39

1. 기본 정렬 => 사전 순으로 정렬

- 오름차순 정렬 [Collections.sort(list) ]

public class Main {
    public static void main(String[] args) throws IOException{
        List<Integer> list = Arrays.asList(3,1,4,2);

        Collections.sort(list);

        for(int i : list){
            System.out.print(i + " ");  // apple banana kiwi pear
        }
   }
}

- 내림차순 정렬 [ Collections.sort(list, Collections.reverseOrder())  ]

public class Main {
    public static void main(String[] args) throws IOException{
        List<String> list = Arrays.asList("banana","apple","pear","kiwi");

        Collections.sort(list,Collections.reverseOrder());

        for(String s : list){
            System.out.print(s + " "); //pear kiwi banana apple
        }
   }
}

 

2. 커스텀 정렬  => new Comparator<?>() 활용, (백준 1181번. 단어 정렬 문제 풀이 가능) 

문제: 단어의 길이가 짧은 순으로 정렬, 단어의 길이가 같다면 사전 순으로 정렬

 

public class Main {
    public static void main(String[] args) throws IOException{
        List<String> list = Arrays.asList("banana","apple","pear","kiwi");

        Collections.sort(list,new Comparator<String>() {
            @Override
            public int compare(String s1, String s2){
                if(s1.length() == s2.length()) return s1.compareTo(s2);
                return s1.length() - s2.length();
            }
        });

        for(String s : list){
            System.out.print(s + " "); //kiwi pear apple banana
        }
   }
}