Как отсортировать и упорядочить список с помощью API потоков Java 8 - PullRequest
0 голосов
/ 07 июля 2019

Дан следующий список объектов:

final List<BusinessUnit> unorderedUnits = Arrays.asList(
            new BusinessUnit("OTHER"),
            new BusinessUnit("BUELL"),
            new BusinessUnit("HARLEY_DAVIDSON"),
            new BusinessUnit("VINTAGE")
        );

Я пытаюсь изменить порядок списка выше, чтобы они были в порядке "HARLEY_DAVIDSON", "VINTAGE", "BUELL", все остальные объекты в списке.

Я пытался добиться этого с помощью:

unorderedUnits.sort(comparingInt(f -> asList("HARLEY_DAVIDSON", "VINTAGE", "BUELL").indexOf(f.getName())));

Результат этого:

result.forEach(r -> System.out.println(r.getName()));

OTHER
HARLEY_DAVIDSON
VINTAGE
BUELL

Обратите внимание, что элемент OTHER стоит перед правильно отсортированными элементами.

Как обеспечить, чтобы элемент OTHER (и любой другой элемент) шел после элементов, соответствующих перечисленным значениям свойств в sort?

1 Ответ

0 голосов
/ 07 июля 2019

следующие comparator:

unorderedUnits.sort(comparingInt(n -> ordered.indexOf(n.getName()) == -1 ? ordered.size() : ordered.indexOf(n.getName())));

Достигает результата, который я искал:

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