Java에서 숫자 값들이 공백으로 구분되어 들어 있는 문자열을 정렬하려면, 문자열을 개별 토큰으로 분리한 뒤 각각을 정수로 변환하고, 마지막으로 배열을 오름차순으로 정렬하면 됩니다. 전체 과정은 다음과 같습니다.
정렬 절차
문자열 준비: 정렬할 숫자들이 포함된 문자열을 가져옵니다.
정수 배열 생성: 변환된 값을 저장할 빈 int 배열을 만듭니다.
split() 메서드: String 클래스의 split() 메서드는 구분자 역할을 하는 문자열을 인수로 받아, 현재 문자열을 토큰 배열로 분할합니다. 이 메서드를 사용해 주어진 문자열을 공백 기준으로 나눕니다.
parseInt() 메서드: Integer 클래스의 parseInt() 메서드는 문자열 값을 받아 정수로 변환합니다. 앞 단계에서 얻은 문자열 배열의 각 요소를 정수로 변환하여 정수 배열에 저장합니다.
sort() 메서드: Arrays 클래스의 sort() 메서드는 배열을 인수로 받아 그 내용을 오름차순으로 정렬합니다. 이 메서드로 정수 배열을 정렬합니다.
예제 코드
public class SortingStrings {
public static void main(String args[]) {
String str = "22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562";
System.out.println("원본 문자열: "+ str);
// 문자열을 공백 기준으로 분할
String[] stringArray = str.split(" ");
// 각 요소를 정수로 변환
int [] intArray = new int[stringArray.length];
for(int i = 0; i < stringArray.length; i++) {
intArray[i] = Integer.parseInt(stringArray[i]);
}
Arrays.sort(intArray);
System.out.println("정렬된 정수 값: "+Arrays.toString(intArray));
}
}실행 결과
원본 문자열: 22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562 정렬된 정수 값: [1, 2, 22, 24, 55, 58, 63, 69, 69, 255, 296, 562, 564, 582, 654, 669, 4285]
참고 사항
이 방식은 문자열 자체를 사전순으로 정렬하는 것이 아니라, 담고 있는 수치를 기준으로 정렬한다는 점이 핵심입니다. 예를 들어 문자열 상태에서 정렬하면 "255"가 "24"보다 앞에 오는 문제가 발생하지만, 위와 같이 정수로 변환한 후 정렬하면 올바른 숫자 순서(오름차순)를 얻을 수 있습니다.