Как создать TreeSet объекта какого либо класса, отсортированное по значению переменной объекта этого класса? К примеру есть класс User:
class User {
String name;
int age;
User(String n, int a) {
name = n;
age = a;
}
}
В классе Main необходимо создать дерево объектов User отсортированное по переменной name
Как это реализовать?
Set<User> users = new TreeSet<>(Comparator.comparing(User::getName));
users.add(new User("Alex", 25));
users.add(new User("Mike", 40));
users.add(new User("Boris", 34));
System.out.println(users);
Вывод:
[User{name='Alex', age=25}, User{name='Boris', age=34}, User{name='Mike', age=40}]
UPD 1 (из комментария): при отсутствии геттера и при условии, что класс package-private и расположен в одном пакете с вызывающим классом:
Set<User> users = new TreeSet<>(Comparator.comparing(u -> u.name));
UPD 2 (из комментария): вариант без лямбд
Set<User> users = new TreeSet<>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.name.compareTo(o2.name);
}
});
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости