Есть ли преимущество использования stream (). Sorted () по сравнению с Collection.sort ()? - PullRequest
0 голосов
/ 27 апреля 2018

Раньше я использовал следующую строку для сортировки элементов до появления потоков в Java:

Collections.sort(collection, new CustomComparator());

Теперь я узнал, что могу получить тот же результат, выполнив:

collection.stream().sorted(new CustomComparator());

В обоих случаях я использую список и пользовательский компаратор, который реализует Comparator (мне это нужно и я не могу реализовать его в самом классе).

Я не нашел ничего, что указывало бы, что они отличаются в любом случае, за исключением того факта, что потоковое решение выглядит лучше .

Есть ли преимущество в использовании потоковой версии? Я имею в виду ... это более производительный? Есть ли разница?

1 Ответ

0 голосов
/ 27 апреля 2018

collection.stream().sorted(new CustomComparator()) не сортирует collection, а только сортирует поток.

Чтобы достичь аналогичного результата с Stream API, вы должны использовать терминальную операцию - собрать в новый список:

collection.stream().sorted(new CustomComparator()).collect(Collectors.toList());

Это не изменит исходную коллекцию (источник потока), но Collections.sort изменится.


Я бы сделал копию коллекции и произвел бы сортировку по ней, если исходный порядок имеет значение.

List<?> collectionCopy = new ArrayList(collection);
Collections.sort(collectionCopy, new CustomComparator());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...