Java 정렬 기법

JavaBeginner
지금 연습하기

소개

정렬은 컴퓨터 과학에서 필수적인 연산이며, Java 는 다양한 데이터 구조를 정렬하기 위한 여러 내장 메서드를 제공합니다. Java 는 다양한 데이터 구조를 정렬하기 위해 여러 클래스를 제공합니다. 이 Lab 에서는 배열, 컬렉션 및 사용자 정의 클래스 인스턴스를 정렬하는 방법을 살펴봅니다.

배열 정렬

배열은 유사한 유형의 데이터를 정렬된 방식으로 저장하는 데 사용되는 간단한 데이터 구조입니다. Arrays 클래스의 내장 sort() 메서드를 사용하여 배열을 정렬할 수 있습니다.

다음 코드는 sort() 메서드를 사용하여 배열을 정렬하는 방법을 보여줍니다.

public static void main(String[] args) {
    int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
    System.out.println("Array Before Sorting: " + Arrays.toString(arr));
    Arrays.sort(arr);
    System.out.println("Array After Sorting: " + Arrays.toString(arr));
}

이 코드를 실행하려면 터미널에서 ~/project 디렉토리로 이동하여 다음 명령을 실행하십시오.

javac Sorting.java
java Sorting

이 코드는 배열을 오름차순으로 정렬합니다. 내림차순으로 배열을 정렬하려면 Comparator 인터페이스를 사용하여 정렬해야 합니다.

컬렉션 정렬

Java 는 리스트, 세트 및 맵과 같은 컬렉션을 정렬하는 sort() 메서드를 가진 Collections 클래스를 제공합니다. 이 함수의 작동 모델은 Arrays 클래스의 sort() 메서드와 유사합니다.

다음 코드는 sort() 메서드를 사용하여 정수 리스트를 정렬하는 방법을 보여줍니다.

public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(6);
    list.add(3);
    list.add(8);
    list.add(1);
    list.add(9);

    System.out.println("List before sorting: " + list);

    Collections.sort(list);
    System.out.println("List after sorting: " + list);
}

이 코드를 실행하려면 터미널에서 ~/project 디렉토리로 이동하여 다음 명령을 실행하십시오.

javac Sorting.java
java Sorting

Set 정렬

세트는 중복 없이 정렬되지 않은 데이터를 저장하는 데 사용됩니다. Collections 클래스의 sort() 메서드를 사용하여 세트를 직접 정렬할 수 없습니다. 그러나 세트의 모든 요소를 리스트로 옮긴 다음 리스트를 정렬하여 정렬된 데이터를 볼 수 있습니다.

다음 코드는 sort() 메서드를 사용하여 정수 세트를 정렬하는 방법을 보여줍니다.

public static void main(String[] args) {
    Set<Integer> set = new HashSet<Integer>();
    set.add(6);
    set.add(3);
    set.add(-2);
    set.add(1);
    set.add(9);

    List<Integer> list = new ArrayList<Integer>(set);
    Collections.sort(list);
    System.out.println("Set after sorting: " + list);
}

이 코드를 실행하려면 터미널에서 ~/project 디렉토리로 이동하여 다음 명령을 실행하십시오.

javac Sorting.java
java Sorting

이 코드의 출력은 정렬된 정수 리스트가 됩니다.

Map 정렬

맵은 키 - 값 쌍을 저장하는 데 사용됩니다. 맵은 키 또는 값을 기준으로 정렬할 수 있습니다. TreeMap을 사용하여 정렬된 순서로 키 - 값 쌍을 저장할 수도 있습니다.

다음 코드는 sort() 메서드를 사용하여 정수 맵을 정렬하는 방법을 보여줍니다.

public static void main(String[] args) {
    Map<Integer, String> map = new TreeMap<Integer, String>();
    map.put(6, "Apple");
    map.put(3, "Banana");
    map.put(1, "Mango");
    map.put(9, "Orange");

    System.out.println("Map before sorting: " + map);

    // Sorting by keys
    Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
    System.out.println("Map after sorting by keys: " + sortedByKeyMap);

    // Sorting by value
    List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
        public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
            return (o1.getValue()).compareTo(o2.getValue());
        }
    });

    Map<Integer, String> sortedByValueMap = new LinkedHashMap<Integer, String>();
    for (Map.Entry<Integer, String> entry : list) {
        sortedByValueMap.put(entry.getKey(), entry.getValue());
    }
    System.out.println("Map after sorting by values: " + sortedByValueMap);
}

이 코드를 실행하려면 터미널에서 ~/project 디렉토리로 이동하여 다음 명령을 실행하십시오.

javac Sorting.java
java Sorting

이 코드는 맵을 키와 값을 기준으로 정렬합니다.

요약

이 랩에서는 Java 에서 다양한 데이터 구조를 정렬하는 방법을 시연했습니다. 배열, 컬렉션 및 맵을 정렬하는 방법을 배웠습니다. 또한 ComparableComparator 인터페이스를 사용하여 사용자 정의 클래스 객체를 정렬하는 방법도 배웠습니다. CollectionsArrays 클래스의 sort() 메서드는 리스트와 배열을 정렬하는 데 사용되었습니다. 마지막으로, 맵을 값과 키를 기준으로 정렬하는 방법을 배웠습니다.