소개
정렬은 컴퓨터 과학에서 필수적인 연산이며, 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 에서 다양한 데이터 구조를 정렬하는 방법을 시연했습니다. 배열, 컬렉션 및 맵을 정렬하는 방법을 배웠습니다. 또한 Comparable 및 Comparator 인터페이스를 사용하여 사용자 정의 클래스 객체를 정렬하는 방법도 배웠습니다. Collections 및 Arrays 클래스의 sort() 메서드는 리스트와 배열을 정렬하는 데 사용되었습니다. 마지막으로, 맵을 값과 키를 기준으로 정렬하는 방법을 배웠습니다.



