Сортировка ведёт себя по разному? - PullRequest
0 голосов
/ 18 октября 2018

Когда я пытаюсь отсортировать строковый массив / список, используя 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().

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

naturalOrder() возвращает Comparator, который сравнивает Comparable объекты в естественном порядке.

В вашем примере он сравнивает записи коллекции в словарном порядке.(u спеть значение ASCII для каждой буквы ).

0 голосов
/ 18 октября 2018

naturalOrder означает согласно - Comparator или обычному порядку сравнения строк, не порядку встреч источника.Это совершенно разные вещи.

Может быть, поток Integer будет проще понять:

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

порядок встречи 3, 4, 1, 2

порядок сортировки1, 2, 3, 4 - значение естественно отсортировано (через Comparator.naturalOrder())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...