У меня есть проблема, которая кажется, что это должно быть просто решить с помощью потоков Java, но до сих пор у меня не получилось (по крайней мере, любым простым способом).
У меня есть поток объектов
class Person {
String name;
int age;
}
List<Person> personList = Arrays.asList(
new Person("Eric", 10),
new Person("Eric", 20),
new Person("Anna", 20),
new Person("John", 20),
new Person("Mary", 5),
new Person("Mary", 20),
new Person("Mary", 10));
Как бы я мог манипулировать этим списком с помощью потоков, чтобы в итоге я получил список (или любую другую коллекцию), содержащую каждого человека (Эрика, Анну, Джона и Мэри) вместе с их самым высоким возрастом.
[Person{name='Eric', age=20}, Person{name='Anna', age=20}, Person{name='John', age=20}, Person{name='Mary', age=20}]
Очевидным было бы правильно реализовать Equals / Hash, но с этим я придумываю только первое появление каждого человека. Я также посмотрел на наборы деревьев и компараторы, но безуспешно.
Что было бы самым элегантным способом решить эту проблему?
Заранее спасибо.