猿问

排序行为不同?

当我尝试使用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 order

This

is

the

natural

order


After ordering

This

is

natural

order

the

为什么Comparator.naturalOrder()会有这样的行为?当我尝试时也是如此Comparator.reverseOrder()。


沧海一幻觉
浏览 126回答 2
2回答

达令说

naturalOrder装置根据到Comparator或纯字符串比较次序,不源的遭遇顺序。这些是完全不同的东西。可能是一个 StreamInteger会更容易理解:Stream.of(3,4,1,2)...遇到顺序是&nbsp;3, 4, 1, 2排序顺序是1, 2, 3, 4- 意味着自然排序(通过Comparator.naturalOrder())

富国沪深

naturalOrder()返回按自然顺序Comparator比较Comparable对象的a&nbsp;。在您的示例中,它按字典顺序比较集合的条目。(您为每个字母唱 ASCII 值)。
随时随地看视频慕课网APP

相关分类

Java
我要回答