Java Unicode 字符串排序

发布于 2024-10-26 18:38:23 字数 161 浏览 6 评论 0原文

在Java中,如何比较Unicode字符串?

我的意思是,如果我有一些日语字符串,当我执行以下操作时:

java.util.Arrays.sort(arrayOfJapaneseStrings);

如何比较和排序这些字符串?

In Java, how does Unicode strings get compared?

What I mean is, if I have a few say, Japanese strings, when I do the following:

java.util.Arrays.sort(arrayOfJapaneseStrings);

how does those strings get compared and sorted?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

随波逐流 2024-11-02 18:38:23

默认情况下,字符串按 Unicode 顺序按字典顺序排序。该顺序采用 UTF-16,因此对于某些字符可能不完全符合您的要求,但日语字符均位于 BMP 中,所以你应该不会对这些有问题。

如果您想要不同的排序顺序,可以使用 java.text.Collat​​or 类来定义不同的排序顺序。

By default, Strings sort lexicographically, by Unicode order. The order is by UTF-16, so might not be exactly what you want for certain characters, but Japanese characters are all in the BMP, so you shouldn't have a problem with these.

If you would like a different sort order, you can use the java.text.Collator classes to define a different sort order.

一场春暖 2024-11-02 18:38:23

默认情况下,它采用 UTF-16 字节码比较。这是最快的方法,因此如果您需要的只是某种顺序(例如,如果您稍后要使用二分搜索,则需要它们按顺序排列,但只是“按顺序排列”),那么这是完美的方法" 的意思并不重要,所以越快越好)。

如果您需要对给定语言环境中的用户有意义的排序,请使用 java.text.Collat​​or 类。

By default it's in UTF-16 byte-code comparison. This is the fastest way, and hence perfect if all you need is some order (e.g. if you are going to use a binary search later, you need them to be in order, but just what "in order" means doesn't matter, so the faster the better).

If you need an ordering that is sensible to a user in a given locale, use the java.text.Collator class.

阿楠 2024-11-02 18:38:23

根据String类的compareTo方法。请参阅 javadoc

比较两个字符串
按字典顺序。比较基于每个字符的 Unicode 值
琴弦。这个表示的字符序列
String 对象按字典顺序与
由参数字符串表示的字符序列。结果是
如果此 String 对象为负整数
按字典顺序位于参数字符串之前。结果是
正整数如果此 String 对象
按字典顺序
跟在参数字符串后面。如果字符串的结果为零
是平等的; compareTo 返回
0 恰好在什么时候
{@link #equals(Object)} 方法将返回 true

According to compareTo methodof String class. See the javadoc:

Compares two strings
lexicographically. The comparison is based on the Unicode value of each character in
the strings. The character sequence represented by this
String object is compared lexicographically to the
character sequence represented by the argument string. The result is
a negative integer if this String object
lexicographically precedes the argument string. The result is a
positive integer if this String object
lexicographically
follows the argument string. The result is zero if the strings
are equal; compareTo returns
0 exactly when
the {@link #equals(Object)} method would return true.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文