Chuỗi số phân tách bằng khoảng trắng → tách thành mảng → parse sang int[] → sort.
Các bước
- Dùng
split("\\s+")tách chuỗi (hỗ trợ nhiều khoảng trắng) - Chuyển từng phần tử sang
intbằngInteger.parseInt() - Sắp xếp mảng int bằng
Arrays.sort()
Ví dụ hoàn chỉnh
import java.util.Arrays;
public class SortNumberString {
public static void main(String[] args) {
String input = "22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562";
System.out.println("Gốc: " + input);
// Tách chuỗi (\\s+ khớp 1 hoặc nhiều whitespace)
String[] strArray = input.split("\\s+");
// Parse sang int[]
int[] intArray = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
}
// Sắp xếp
Arrays.sort(intArray);
System.out.println("Đã sort: " + Arrays.toString(intArray));
}
}
Kết quả
Gốc: 22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562
Đã sort: [1, 2, 22, 24, 55, 58, 63, 69, 69, 255, 296, 562, 564, 582, 654, 669, 4285]
Java 8+ Stream (ngắn gọn hơn)
int[] sorted = Arrays.stream(input.split("\\s+"))
.mapToInt(Integer::parseInt)
.sorted()
.toArray();
System.out.println(Arrays.toString(sorted));
⚠️ Xử lý lỗi
Nếu chuỗi có thể chứa giá trị không phải số, bọc parseInt trong try-catch hoặc dùng Optional để lọc:
int[] sorted = Arrays.stream(input.split("\\s+"))
.filter(s -> s.matches("-?\\d+")) // chỉ số nguyên
.mapToInt(Integer::parseInt)
.sorted()
.toArray();