为了账号安全,请及时绑定邮箱和手机立即绑定

排序行为不同?

排序行为不同?

沧海一幻觉 2021-11-24 20:16:04
当我尝试使用Comparator.naturalOrder()它对字符串数组/列表进行排序时,它不遵守列表的自然顺序。这是我使用的片段:List< String > ordered = Arrays.asList( "This", "is", "the", "natural" ,"order");System.out.println( "Natural order" );ordered.forEach( System.out::println );ordered.sort(Comparator.naturalOrder( ));System.out.println( "After ordering" );for ( String string: ordered ) {    System.out.println( string );}输出:Natural orderThisisthenaturalorderAfter orderingThisisnaturalorderthe为什么Comparator.naturalOrder()会有这样的行为?当我尝试时也是如此Comparator.reverseOrder()。
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

naturalOrder装置根据Comparator或纯字符串比较次序,源的遭遇顺序。这些是完全不同的东西。

可能是一个 StreamInteger会更容易理解:

Stream.of(3,4,1,2)...

遇到顺序是 3, 4, 1, 2

排序顺序是1, 2, 3, 4- 意味着自然排序(通过Comparator.naturalOrder()


查看完整回答
反对 回复 2021-11-24
?
富国沪深

TA贡献1790条经验 获得超9个赞

naturalOrder()返回按自然顺序Comparator比较Comparable对象的a 。

在您的示例中,它按字典顺序比较集合的条目。(您为每个字母唱 ASCII 值)。


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信