Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan Perbandingan Rentetan Susunan Semulajadi di Jawa?

Bagaimana untuk Melaksanakan Perbandingan Rentetan Susunan Semulajadi di Jawa?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 18:30:03353semak imbas

How to Implement Natural Sort Order String Comparison in Java?

Perbandingan Rentetan Susunan Isih Semulajadi di Jawa

Tertib isihan "semula jadi", seperti yang difahami oleh manusia, membandingkan rentetan berdasarkan berangka dan komponen abjad. Ini berbeza daripada susunan leksikografi lalai, yang mengutamakan susunan aksara.

Di Java, tiada fungsi terbina dalam yang direka khusus untuk susunan isihan semula jadi. Walau bagaimanapun, anda boleh mencapai tingkah laku ini menggunakan pelaksanaan luaran berikut:

<code class="java">// NaturalOrderComparator.java

// License: Cougaar Open Source License
import java.util.Comparator;

public class NaturalOrderComparator implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
        // Split strings into tokens
        String[] s1Tokens = s1.split("(?<=\D)(?=\d)|(?<=\d)(?=\D)");
        String[] s2Tokens = s2.split("(?<=\D)(?=\d)|(?<=\d)(?=\D)");

        // Compare tokens one by one
        int i = 0;
        while (i < Math.min(s1Tokens.length, s2Tokens.length)) {
            try {
                int n1 = Integer.parseInt(s1Tokens[i]);
                int n2 = Integer.parseInt(s2Tokens[i]);

                // Numerical comparison
                if (n1 != n2) {
                    return n1 - n2;
                }
            } catch (NumberFormatException e) {
                // Alphabetical comparison
                int comparison = s1Tokens[i].compareTo(s2Tokens[i]);
                if (comparison != 0) {
                    return comparison;
                }
            }
            i++;
        }

        // If all tokens are equal, compare lengths
        if (s1Tokens.length != s2Tokens.length) {
            return s1Tokens.length - s2Tokens.length;
        }

        // Strings are identical
        return 0;
    }
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perbandingan Rentetan Susunan Semulajadi di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn