BeanComparator的compare方法的排序规则是什么?

跳蚤图 2013-07-23 04:48:10
方法定义:
public int compare( Object o1, Object o2 ) {

我用英文字母,数字,日文平假名,片假名组成一个collection,然后用上述语句给这个collection排序。

原来的顺序
ab
bc
what
うつ
789
12345
システム



升序排序后的结果:
12345
789
ab
bc
what

うつ

システム

谁能总结一下规律,这个方法到底是按照什么规则排序的?出来这个结果是什么依据啊?

源代码也看不出来是怎么回事。

ps:没重写这个方法,直接用的jar包里的。
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2013-07-24
  • 打赏
  • 举报
回复
引用 5 楼 feier00 的回复:
[quote=引用 3 楼 oh_Maxy 的回复:] 如果API也满足不了你,可以用反编译工具看看它的具体实现。
看了,但是只能进到compare方法这一层,再往下就进不去了,debug按F5直接跳出来。[/quote] 静态的看吧,不需要debug的。
跳蚤图 2013-07-24
  • 打赏
  • 举报
回复
引用 1 楼 rencht 的回复:
从第一个字符开始,按ASCII码排序啦^_^
我开始也是这么想的。但是找不到ASCII码表来验证,比如上面所有的数字,字母,日文能在哪儿查到各自的ASCII码呢?
跳蚤图 2013-07-24
  • 打赏
  • 举报
回复
引用 3 楼 oh_Maxy 的回复:
如果API也满足不了你,可以用反编译工具看看它的具体实现。
看了,但是只能进到compare方法这一层,再往下就进不去了,debug按F5直接跳出来。
S117 2013-07-24
  • 打赏
  • 举报
回复
应该是按字符串排序了!
oh_Maxy 2013-07-23
  • 打赏
  • 举报
回复
如果API也满足不了你,可以用反编译工具看看它的具体实现。
长笛党希望 2013-07-23
  • 打赏
  • 举报
回复
根据jdk文档所描述的: 根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。 此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。 指定列表必须是可修改的,但不必是大小可调整的。 该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置处每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。
rencht 2013-07-23
  • 打赏
  • 举报
回复
从第一个字符开始,按ASCII码排序啦^_^

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧