Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การเรียงลำดับสตริงที่เก็บค่าตัวเลขใน Java

เมื่อมีสตริงที่เก็บตัวเลขคั่นด้วยช่องว่าง (หรือ delimiter อื่น) และต้องการเรียงลำดับเป็นตัวเลข:

ขั้นตอน

  1. รับสตริงต้นฉบับ
  2. สร้าง int array ว่าง
  3. ใช้ split() แยกสตริงเป็น String array
  4. ใช้ Integer.parseInt() แปลงแต่ละตัวเป็น int เก็บใน int array
  5. ใช้ 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-catch
  • split(" ") แยกเฉพาะ space เดียว หากมีหลาย space ใช้ split("\\s+")
  • สำหรับข้อมูลใหญ่ พิจารณาใช้ List<Integer> แทน array เพื่อความยืดหยุ่น