Java で自然な並べ替え順序の文字列比較を実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-03 18:30:03
オリジナル
299 人が閲覧しました

How to Implement Natural Sort Order String Comparison in Java?

Java での自然なソート順の文字列比較

人間が理解する「自然な」ソート順は、数値と文字列に基づいて文字列を比較します。アルファベットのコンポーネント。これは、文字順序を優先するデフォルトの辞書編集順序とは異なります。

Java には、自然な並べ替え順序用に特別に設計された組み込み関数はありません。ただし、次の外部実装を使用してこの動作を実現できます:

<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>
ログイン後にコピー

以上がJava で自然な並べ替え順序の文字列比較を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート