เมื่อมีสตริงที่เก็บตัวเลขคั่นด้วยช่องว่าง (หรือ delimiter อื่น) และต้องการเรียงลำดับเป็นตัวเลข:
ขั้นตอน
- รับสตริงต้นฉบับ
- สร้าง int array ว่าง
- ใช้ split() แยกสตริงเป็น String array
- ใช้ Integer.parseInt() แปลงแต่ละตัวเป็น int เก็บใน int array
- ใช้ Arrays.sort() เรียงลำดับ int array
ตัวอย่างโค้ด
import java.util.Arrays;
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("Original: " + str);
// แยกสตริง
String[] stringArray = str.split(" ");
// แปลงเป็น int array
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("Sorted: " + Arrays.toString(intArray));
}
}
ผลลัพธ์
Original: 22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562
Sorted: [1, 2, 22, 24, 55, 58, 63, 69, 69, 255, 296, 562, 564, 582, 654, 669, 4285]
วิธีทางเลือก: ใช้ Stream API (Java 8+)
import java.util.Arrays;
import java.util.stream.Collectors;
String str = "22 58 69 63 69 55 669 24 4285 654 1 296 564 2 582 255 562";
int[] sorted = Arrays.stream(str.split(" "))
.mapToInt(Integer::parseInt)
.sorted()
.toArray();
System.out.println(Arrays.toString(sorted));
กรณี delimiter อื่น
// คั่นด้วย comma
String str = "22,58,69,63";
String[] parts = str.split(","); // หรือ str.split("\\s*,\\s*") เพื่อทน space
// คั่นหลายตัว
String str = "22;58|69,63";
String[] parts = str.split("[;|,]"); // regex character class
ข้อควรระวัง
NumberFormatExceptionหากสตริงมีตัวอักษรไม่ใช่ตัวเลข - ควร wrap ด้วย try-catchsplit(" ")แยกเฉพาะ space เดียว หากมีหลาย space ใช้split("\\s+")- สำหรับข้อมูลใหญ่ พิจารณาใช้
List<Integer>แทน array เพื่อความยืดหยุ่น