소개
Java 에는 문자열 (String) 클래스 내에 정렬을 위한 단일 메서드가 없습니다. 하지만, 문자 배열은 다양한 알고리즘을 사용하여 쉽게 정렬할 수 있다는 사실을 활용할 수 있습니다. Java 에서 문자열을 정렬하는 방법에는 Arrays.sort() 사용, Arrays.sort()에서 Comparator 사용, 또는 Selection Sort 및 Bubble Sort와 같은 일반적으로 사용되는 정렬 알고리즘 사용 등 여러 가지가 있습니다. 이 Lab 에서는 Arrays.sort() 메서드를 사용하여 Java 에서 문자열을 정렬하는 방법을 살펴봅니다.
코드 작성
이 단계에서는 Arrays.sort() 함수를 사용하여 문자열을 정렬하는 Java 프로그램을 작성합니다. 코드는 입력 문자열을 받아 문자 배열로 변환하고, Arrays.sort() 함수를 사용하여 배열을 정렬한 다음 다시 문자열로 변환합니다.
import java.util.Arrays;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
char[] tempArr = originalString.toCharArray(); // convert string to character array
Arrays.sort(tempArr); // sort character array
sortedString = new String(tempArr); // convert sorted character array to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
}
코드 컴파일 및 실행
터미널을 열고 ~/project 디렉토리로 이동합니다. 다음 명령을 사용하여 Java 프로그램을 컴파일합니다.
javac SortString.java
다음 명령을 사용하여 Java 프로그램을 실행합니다.
java SortString
프로그램의 출력은 다음과 같습니다.
Original String: The quick brown fox jumps over the lazy dog
Sorted String: Tabcdeeefghhijklmnoooopqrrstuuvwxyz
대소문자 구분 없는 정렬 구현
Java 에서 Arrays.sort() 메서드는 유니코드 값을 사용하여 문자를 비교합니다. 대소문자를 구분하지 않고 문자열을 정렬하려면 Comparator를 사용하여 정렬 알고리즘을 수정할 수 있습니다. 이 단계에서는 이전 Java 코드를 수정하여 대소문자를 구분하지 않고 문자열을 정렬합니다.
import java.util.Arrays;
import java.util.Comparator;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
Character[] tempArr = toCharacterArray(originalString.toLowerCase()); // convert lowercase string to Character array
Arrays.sort(tempArr, new Comparator<Character>() { // sort with case-insensitive comparator
@Override
public int compare(Character c1, Character c2) {
return c1.compareTo(c2);
}
});
StringBuilder sb = new StringBuilder(tempArr.length); // create a StringBuilder object
for (Character c : tempArr) {
sb.append(c.charValue()); // add sorted characters to the StringBuilder object
}
sortedString = sb.toString(); // convert StringBuilder object to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
// method to convert a string to Character array
private static Character[] toCharacterArray(String str) {
Character[] arr = new Character[str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = str.charAt(i);
}
return arr;
}
}
업데이트된 코드 컴파일 및 실행
다음 명령을 사용하여 업데이트된 Java 프로그램을 컴파일합니다.
javac SortString.java
다음 명령을 사용하여 Java 프로그램을 실행합니다.
java SortString
프로그램의 출력은 다음과 같습니다.
Original String: The quick brown fox jumps over the lazy dog
Sorted String: abcdeeefghhijklmnoooopqrrsttuuvwxyz
전통적인 방법으로 정렬 구현
이 단계에서는 전통적인 중첩 루프 (nested loop) 방식을 사용하여 문자 배열에 대한 정렬을 구현합니다. 이 알고리즘은 각 문자를 오른쪽에 있는 문자와 비교하고, 오른쪽 문자가 현재 문자보다 작으면 문자를 교환합니다.
import java.util.Arrays;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
char[] tempArr = originalString.toCharArray(); // convert string to character array
int n = tempArr.length;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (tempArr[i] > tempArr[j]) {
char temp = tempArr[i];
tempArr[i] = tempArr[j];
tempArr[j] = temp;
}
}
}
sortedString = new String(tempArr); // convert sorted character array to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
}
업데이트된 코드 컴파일 및 실행
이전 명령을 사용하여 업데이트된 Java 프로그램을 컴파일합니다.
javac SortString.java
다음 명령을 사용하여 Java 프로그램을 실행합니다.
java SortString
프로그램의 출력은 다음과 같습니다.
Original String: The quick brown fox jumps over the lazy dog
Sorted String: Tabcdeeefghhijklmnoooopqrrstuuvwxyz
요약
이 랩에서는 Arrays.sort() 메서드를 사용하여 Java 에서 문자열을 정렬하는 방법을 배웠습니다. 또한 Comparator를 사용하여 대소문자를 구분하지 않는 정렬과 중첩 루프를 사용한 전통적인 정렬을 구현하는 방법도 배웠습니다.



