Получить минимальный объект на основе некоторых полей из списка объектов - PullRequest
0 голосов
/ 16 мая 2018

Я новичок в разработке для Android и пытаюсь найти лучший способ получить минимальный объект из списка объектов на основе 3 полей.У меня есть список объектов, каждый объект имеет 4 поля: Name, State (значение int), LSeconds (значение int) и USeconds (значение int).Я хочу получить минимальный объект сначала на основе State (минимальное значение состояния), и если два или более объектов имеют одинаковое минимальное состояние, чтобы проверить значение LSeconds для объектов поиска, и если они также совпадают, проверитьUSeconds и в конце вернуть первый, если существует более одного объекта с одинаковым минимумом State, минимумом LSeconds и минимумом USeconds.Есть ли функция, которая может сделать это автоматически, или мне нужно сделать это с помощью for?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

В Java 8 вы можете использовать Компаратор :

Comparator<YourObject> comparator = Comparator.comparing(YourObject::getState)
                         .thenComparing(YourObject::getLSeconds)
                         .thenComparing(YourObject::getUSeconds);

Затем вы можете отсортировать свой список: Collections.sort(yourList, comparator);

0 голосов
/ 16 мая 2018

Java не имеет такой функции сортировки с объектами, которые вы ищете.Если вы используете StreamSupport библиотеку Java, есть способ, который вы можете использовать, например, такой:

List<YourObject> result = list.stream().sorted((ob1, ob2)-> ob1.getState().
                               compareTo(ob2.getState())).
                               collect(Collectors.toList());

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

PS: это легко сделать с помощью Kotlin, как в этот вопрос

РЕДАКТИРОВАТЬ : На самом деле, вы можете с Java 8, извините.Проверьте @ mạnh-quyết-nguyễn ответ .

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