Java 에서 Arrays.sort() 를 사용한 문자열 정렬

JavaBeginner
지금 연습하기

소개

Java 에는 문자열 (String) 클래스 내에 정렬을 위한 단일 메서드가 없습니다. 하지만, 문자 배열은 다양한 알고리즘을 사용하여 쉽게 정렬할 수 있다는 사실을 활용할 수 있습니다. Java 에서 문자열을 정렬하는 방법에는 Arrays.sort() 사용, Arrays.sort()에서 Comparator 사용, 또는 Selection SortBubble 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를 사용하여 대소문자를 구분하지 않는 정렬과 중첩 루프를 사용한 전통적인 정렬을 구현하는 방법도 배웠습니다.