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

按字典顺序比较两个字符串。比较基于字符串中每个字符的 Unicode 值。此 String对象表示的字符序列按字典顺序与参数字符串表示的字符序列进行比较。String如果此对象按字典顺序位于参数字符串之前,则结果为负整数。String如果此对象按字典顺序跟随参数字符串,则结果为正整数。如果字符串相等,则结果为零;恰好在 {@link #equals(Object)} 方法返回时compareTo返回 。 0true

于 2011-03-25T13:26:08.360 回答