Javaでは、Unicode文字列はどのように比較されますか?
私が言いたいのは、いくつか言うと、日本語の文字列で、次のことを行うときです。
java.util.Arrays.sort(arrayOfJapaneseStrings);
これらの文字列はどのように比較され、並べ替えられますか?
Javaでは、Unicode文字列はどのように比較されますか?
私が言いたいのは、いくつか言うと、日本語の文字列で、次のことを行うときです。
java.util.Arrays.sort(arrayOfJapaneseStrings);
これらの文字列はどのように比較され、並べ替えられますか?
デフォルトでは、文字列は辞書順、Unicode 順でソートされます。順序は UTF-16 順であるため、特定の文字については正確ではない場合がありますが、日本語の文字はすべてBMPに含まれているため、これらに問題はありません。
別の並べ替え順序が必要な場合は、java.text.Collator
クラスを使用して別の並べ替え順序を定義できます。
デフォルトでは、UTF-16 バイトコード比較です。これは最速の方法であり、したがって、必要なのは何らかの順序である場合に最適です (たとえば、後で二分探索を使用する場合は、それらを順序どおりにする必要がありますが、「順序」が意味することは問題ではありません。したがって、速いほど良い)。
特定のロケールのユーザーにとってわかりやすい順序付けが必要な場合は、java.text.Collator クラスを使用します。
compareTo
Stringクラスのメソッドによる。javadocを参照してください。
2 つの文字列を辞書順に比較します。比較は、文字列内の各文字の Unicode 値に基づいています。この
String
オブジェクトによって表される文字シーケンスは、引数文字列によって表される文字シーケンスと辞書式に比較されます。このString
オブジェクトが辞書順で引数文字列より前にある場合、結果は負の整数になります。このString
オブジェクトが引数文字列の後に辞書式に続く場合、結果は正の整数になります。文字列が等しい場合、結果はゼロです。{@link #equals(Object)} メソッドが をcompareTo
返す 正確なタイミングで を返します。0
true