当我尝试使用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()
)
富国沪深
TA贡献1790条经验 获得超9个赞
naturalOrder()
返回按自然顺序Comparator
比较Comparable
对象的a 。
在您的示例中,它按字典顺序比较集合的条目。(您为每个字母唱 ASCII 值)。
添加回答
举报
0/150
提交
取消