Вопрос основан на https://stackoverflow.com/a/29671501/2517622
Приведен список сотрудников с идентификатором, именем и IQ:
List<Employee> employee = Arrays.asList(new Employee(1, "John", 80), new Employee(1, "Bob", 120), Employee(1, "Roy", 60), new Employee(2, "Alice", 100));
Я хочу вывести:
[Employee{id=1, name='Bob', iq=120}, Employee{id=2, name='Alice', iq=100}]
Итак, удалите дубликаты из списка на основе свойства id сотрудника и выберите сотрудника с самым высоким IQ по очевидным причинам. :)
В частности, я заинтересован в настройке этого решения, которое удаляет дубликаты только на основе идентификатора:
import static java.util.Comparator.comparingInt;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
...
List<Employee> unique = employee.stream()
.collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingInt(Employee::getId))),
ArrayList::new));
Есть ли способ?