【发布时间】:2010-01-22 20:45:18
【问题描述】:
除了转换为 UTF-8 字节或编写一个迭代和比较的比较函数之外,我在 JDK 1.6 中是否缺少一些方法,它以完整的 Unicode 代码点顺序而不是 UCS-2 代码点比较两个字符串订购?
我很欣赏这不是一件很难编码的事情。然而,我感到困惑的是,1.6 在java.lang.String 中具有各种“代码点”API 以及排序系统,但显然没有什么可以简单地比较两个字符串而不打嗝代理。
为了评论者的利益,我必须将一些数据提供给需要按此顺序排列的字符串的工具。
【问题讨论】:
-
默认情况下已经这样做了?还是您实际上想在排序中考虑变音符号?例如。
aa、aà、ab而不是(默认)aa、ab、aà?否则我看不出这个问题有任何理由:) -
String.compareTo 至少在 Sun 的 JVM 1.6.0_16 中被实现为包含的字符的比较。如果字符串包含 BMP 之外的字符的代理对,这将不适用于 bmargulies 要求。
-
实际上,这种行为在 API 文档中有描述,因此基于字符值的 compareTo 并不是 Sun 的 VM 的实现细节。
-
在当前的 Java 1.8/1.9 API 中有解决方案吗?或者可能在图书馆内?