6

Javaでは、Unicode文字列はどのように比較されますか?

私が言いたいのは、いくつか言うと、日本語の文字列で、次のことを行うときです。

java.util.Arrays.sort(arrayOfJapaneseStrings);

これらの文字列はどのように比較され、並べ替えられますか?

4

3 に答える 3

11

デフォルトでは、文字列は辞書順、Unicode 順でソートされます。順序は UTF-16 順であるため、特定の文字については正確ではない場合がありますが、日本語の文字はすべてBMPに含まれているため、これらに問題はありません。

別の並べ替え順序が必要な場合は、java.text.Collatorクラスを使用して別の並べ替え順序を定義できます。

于 2011-03-25T13:29:11.170 に答える
2

デフォルトでは、UTF-16 バイトコード比較です。これは最速の方法であり、したがって、必要なのは何らかの順序である場合に最適です (たとえば、後で二分探索を使用する場合は、それらを順序どおりにする必要がありますが、「順序」が意味することは問題ではありません。したがって、速いほど良い)。

特定のロケールのユーザーにとってわかりやすい順序付けが必要な場合は、java.text.Collat​​or クラスを使用します。

于 2011-03-25T13:28:37.253 に答える
0

compareToStringクラスのメソッドによる。javadocを参照してください。

2 つの文字列を辞書順に比較します。比較は、文字列内の各文字の Unicode 値に基づいています。この Stringオブジェクトによって表される文字シーケンスは、引数文字列によって表される文字シーケンスと辞書式に比較されます。このStringオブジェクトが辞書順で引数文字列より前にある場合、結果は負の整数になります。このStringオブジェクトが引数文字列の後に辞書式に続く場合、結果は正の整数になります。文字列が等しい場合、結果はゼロです。{@link #equals(Object)} メソッドが をcompareTo返す 正確なタイミングで を返します。 0true

于 2011-03-25T13:26:08.360 に答える