【发布时间】:2011-07-22 22:14:06
【问题描述】:
在 Java 中,如何比较 Unicode 字符串?
我的意思是,如果我有几个说日文字符串,当我执行以下操作时:
java.util.Arrays.sort(arrayOfJapaneseStrings);
这些字符串是如何比较和排序的?
【问题讨论】:
标签: java string unicode collation unicode-string
在 Java 中,如何比较 Unicode 字符串?
我的意思是,如果我有几个说日文字符串,当我执行以下操作时:
java.util.Arrays.sort(arrayOfJapaneseStrings);
这些字符串是如何比较和排序的?
【问题讨论】:
标签: java string unicode collation unicode-string
默认情况下,字符串按 Unicode 顺序按字典顺序排序。顺序是 UTF-16,所以某些字符可能不是你想要的,但是日文字符都在 BMP 中,所以你不应该对这些有问题。
如果您想要不同的排序顺序,可以使用java.text.Collator 类来定义不同的排序顺序。
【讨论】:
默认情况下,它采用 UTF-16 字节码比较。这是最快的方法,因此如果您只需要 some 顺序(例如,如果您稍后要使用二进制搜索,则需要它们按顺序排列,但只是“按顺序排列” " 表示无所谓,越快越好)。
如果您需要在给定语言环境中对用户有意义的排序,请使用 java.text.Collator 类。
【讨论】:
根据compareToString类的方法。见javadoc:
比较两个字符串 按字典顺序。比较基于中每个字符的 Unicode 值 字符串。这个代表的字符序列
String对象按字典顺序与 由参数字符串表示的字符序列。结果是 如果此String对象,则为负整数 按字典顺序在参数字符串之前。结果是一个 如果此String对象,则为正整数 按字典顺序 跟随参数字符串。如果字符串结果为零 是平等的;compareTo返回0确切时间 {@link #equals(Object)} 方法将返回true。
【讨论】: