Java에서 문자열 배열을 알파벳순으로 정렬
- Java에서 내장 메소드를 사용하지 않고 문자열 배열 정렬
-
Java의
stringArraySort()
메서드를 사용하여 문자열 배열 정렬 -
Java에서
compareTo()
메소드를 사용하여 문자열 배열 정렬 -
Java의
Arrays.sort()
메서드를 사용하여 문자열 배열 정렬 - Java에서 내림차순으로 문자열 배열 정렬
- Java에서 대소문자를 무시하여 문자열 배열 정렬
- Java에서 문자열 배열을 알파벳순으로 정렬
이 자습서에서는 Java에서 문자열 배열을 알파벳순으로 정렬하는 방법을 소개합니다. 또한 주제를 이해하는 데 도움이 되는 몇 가지 예제 코드를 나열했습니다.
정렬은 데이터를 특정 순서로 정렬하는 것입니다. 정수를 오름차순 또는 내림차순으로 정렬하거나 영어 문자나 단어를 사전순으로 정렬할 수 있습니다.
사전순은 단어가 영어 단어 사전에 있는 경우 단어가 나타나는 순서입니다. 이 가이드에서는 Java에서 문자열 배열을 정렬하는 방법에 대해 설명합니다.
이 기사의 문자열을 더 작거나 더 큰 단어와 비교할 것입니다. 하나의 문자열은 사전순에 따라 먼저 나타나는 경우 다른 문자열보다 작습니다.
또한 사전 순서에서 모든 대문자가 소문자보다 먼저 옵니다. 이것은 정렬된 배열에서 Z
로 시작하는 단어가 a
로 시작하는 단어보다 먼저 나타납니다.
Java에서 내장 메소드를 사용하지 않고 문자열 배열 정렬
먼저 Java에서 자체 정렬 방법을 구현하려고 합니다. 두 문자열을 비교하여 어느 것이 더 작거나 더 큰지 알려주는 compareStrings()
라는 메서드를 만들 것입니다.
다음으로 compareStrings()
메서드를 사용하여 각 문자열을 배열에 있는 다른 모든 문자열과 비교하고 해당 문자열을 올바른 위치에 배치합니다. 두 가지 방법에 대한 알고리즘은 다음과 같습니다.
- 이 메서드의 입력은 두 개의 문자열이며 정수 값을 반환합니다. 이 방법의 출력은 다음과 같습니다.
string1
>string2
인 경우: 양의 정수 반환string1
<string2
인 경우: 음의 정수 반환string1
==string2
인 경우:0
반환
- 두 문자열의 각 문자를 동시에 반복하고 유니코드 값을 비교합니다. 내장
charAt()
메서드를 사용하여 유니코드 값을 가져옵니다. 이 값을 사용하면 문자를 일반 정수인 것처럼 비교할 수 있습니다. - 유니코드 값이 두 문자 모두에 대해 동일한 경우 각 문자열의 다음 문자로 이동합니다.
- 유니코드 값이 다르면 값의 차이를 반환합니다.
- 두 문자열의 문자가 모두 떨어지면 루프가 종료됩니다.
- 루프 외부에서 두 문자열의 길이가 다른 경우 이 차이를 반환합니다. 더 작은 문자열의 모든 문자가 더 긴 문자열의 시작 부분에 나타날 수 있기 때문에 이렇게 합니다. 예를 들어
app
및application
. 이 경우 더 긴 문자열이 더 작은 문자열 다음에 옵니다. - 문자열의 길이가 같으면 단순히
0
을 반환하여 두 문자열이 동일함을 나타냅니다.
Java의 stringArraySort()
메서드를 사용하여 문자열 배열 정렬
이 메서드는 문자열 배열을 입력으로 받아 정렬된 배열을 반환합니다. 여기에서 하나는 다른 하나에 중첩된 두 개의 루프를 갖게 됩니다. 배열의 각 요소를 나머지 모든 요소와 비교하는 데 사용됩니다.
루프 내부의 각 요소 쌍에 대해 compareString()
메서드를 사용하여 비교합니다. 첫 번째 문자열이 다른 문자열보다 크면 위치를 바꿉니다.
전체 코드는 아래에 나와 있습니다.
public class Main {
public static int compareStrings(String word1, String word2) {
for (int i = 0; i < Math.min(word1.length(), word2.length()); i++) {
if ((int) word1.charAt(i) != (int) word2.charAt(i)) // comparing unicode values
return (int) word1.charAt(i) - (int) word2.charAt(i);
}
if (word1.length()
!= word2.length()) // smaller word is occurs at the beginning of the larger word
return word1.length() - word2.length();
else
return 0;
}
public static String[] stringArraySort(String[] words) {
for (int i = 0; i < words.length - 1; i++) {
for (int j = i + 1; j < words.length; j++) {
if (compareStrings(words[i], words[j]) > 0) // words[i] is greater than words[j]
{
String temp = words[i];
words[i] = words[j];
words[j] = temp;
}
}
}
return words;
}
public static void main(String[] args) {
String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
String[] sortedArr = stringArraySort(arrToSort);
for (int i = 0; i < sortedArr.length; i++) System.out.print(sortedArr[i] + " ");
}
}
출력:
Blueberry Strawberry apple bananas oranges
Java에서 compareTo()
메소드를 사용하여 문자열 배열 정렬
위의 코드에서 우리는 두 문자열을 비교하고 사전에 있는 경우 어떤 문자열이 먼저 올 것인지를 나타내는 정수 값을 반환하는 메서드를 작성했습니다.
Java는 compareTo()
라고 하는 내장 메소드를 제공하여 이 작업을 수행할 수 있습니다. 이 메서드의 구문은 다음과 같습니다.
string1.compareTo(string2)
이 메소드의 출력은 앞서 정의한 compareStrings()
메소드와 유사합니다.
string1
>string2
인 경우: 양의 정수 반환string1
<string2
인 경우: 음의 정수 반환string1
==string2
인 경우: 0 반환
다음 코드는 compareTo()
메소드가 Java에서 작동하는 방식을 보여줍니다.
public class Main {
public static void main(String[] args) {
System.out.println("apple".compareTo("orange")); // apple < orange
System.out.println("AAA".compareTo("aaa")); // AAA < aaa
System.out.println("ZZZ".compareTo("aaa")); // ZZZ < aaa
System.out.println("zzz".compareTo("aaa")); // zzz > aaa
System.out.println("strawberry".compareTo("strawberry")); // strawberry == strawberry
}
}
출력:
-14
-32
-7
25
0
compareTo()
메소드를 사용하여 배열을 정렬할 수 있습니다. 이 프로그램은 위의 이전 프로그램과 매우 유사합니다. 유일한 차이점은 앞에서 정의한 compareStrings()
메서드 대신 compareTo()
메서드를 사용한다는 것입니다.
public class Main {
public static String[] stringArraySort(String[] words) {
for (int i = 0; i < words.length - 1; i++) {
for (int j = i + 1; j < words.length; j++) {
if (words[i].compareTo(words[j]) > 0) // words[i] is greater than words[j]
{
String temp = words[i];
words[i] = words[j];
words[j] = temp;
}
}
}
return words;
}
public static void main(String[] args) {
String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
String[] sortedArr = stringArraySort(arrToSort);
for (int i = 0; i < sortedArr.length; i++) System.out.print(sortedArr[i] + " ");
}
}
출력:
Blueberry Strawberry apple bananas oranges
Java의 Arrays.sort()
메서드를 사용하여 문자열 배열 정렬
배열을 정렬하는 더 간단한 방법이 있습니다. 이를 위해 Arrays
클래스의 sort()
메소드를 사용할 수 있습니다. 이 메서드의 구문은 다음과 같습니다.
Arrays.sort(stringArray)
기본적으로 배열은 자연 순서(사전순)로 정렬됩니다. 그러나 다른 비교자를 지정하여 이 순서를 변경할 수 있습니다.
비교기는 두 개체를 비교하고 어느 것이 다른 것보다 작거나 큰지를 알려주는 데 사용되는 방법입니다. sort()
방법은 Quicksort
알고리즘을 사용하며 O(n*log(n))
의 시간 복잡도를 갖습니다.
다음 코드는 sort()
메서드의 기본 동작을 보여줍니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
Arrays.sort(arrToSort);
for (int i = 0; i < arrToSort.length; i++) {
System.out.print(arrToSort[i] + " ");
}
}
}
출력:
Blueberry Strawberry apple bananas oranges
Java에서 내림차순으로 문자열 배열 정렬
자연 역순 또는 내림차순으로 배열을 정렬하려면 아래와 같이 reverseOrder()
비교기를 사용할 수 있습니다.
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
Arrays.sort(arrToSort, Collections.reverseOrder());
for (int i = 0; i < arrToSort.length; i++) {
System.out.print(arrToSort[i] + " ");
}
}
}
출력:
oranges bananas apple Strawberry Blueberry
Java에서 대소문자를 무시하여 문자열 배열 정렬
문자열 배열을 알파벳 순서로 설정하되 대소문자를 무시하려면 아래 코드 예제를 사용하십시오.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] arrToSort = {"apple", "oranges", "bananas", "Strawberry", "Blueberry"};
Arrays.sort(arrToSort, String.CASE_INSENSITIVE_ORDER); // case insensitive sort
for (int i = 0; i < arrToSort.length; i++) {
System.out.print(arrToSort[i] + " ");
}
}
}
출력:
apple bananas Blueberry oranges Strawberry
Java에서 문자열 배열을 알파벳순으로 정렬
정렬은 특정 순서로 요소를 정렬하는 것입니다. 문자열 배열을 알파벳순 또는 사전순으로 정렬할 수 있습니다. Java에는 내장 compareTo()
메소드가 있습니다. 이 메소드는 두 문자열을 비교하고 어느 것이 다른 것보다 더 큰지 구별하는 데 사용할 수 있습니다. 이 방법을 사용하여 정렬 알고리즘을 작성할 수 있습니다.
Java에는 문자열 배열을 정렬할 수 있는 Arrays.sort()
메서드도 있습니다. sort()
메서드에 대해 다른 비교기를 사용하여 다른 방식으로 배열 순서를 설정할 수 있습니다.
관련 문장 - Java String
- Java 문자열을 바이트로 변환하는 방법
- Java에서 16 진 문자열의 바이트 배열을 변환하는 방법
- Java에서 문자열 대 문자열 배열 변환을 수행하는 방법
- Java에서 문자열에서 부분 문자열을 제거하는 방법
- Java에서 임의 문자열 생성
- Java의 스왑 방법