Сортировка TreeSet | java

311
31 марта 2018, 16:20

Как создать TreeSet объекта какого либо класса, отсортированное по значению переменной объекта этого класса? К примеру есть класс User:

class User {
    String name;
    int age;
    User(String n, int a) {
        name = n;
        age = a;
    }
}

В классе Main необходимо создать дерево объектов User отсортированное по переменной name Как это реализовать?

Answer 1
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);
    }
});
READ ALSO
JavaFx, Canvas, Тригонометрия

JavaFx, Canvas, Тригонометрия

В общем, суть задачи такая Я хочу по заданному массиву рисовать n угольник(или скорее окружность) его элементов, где n - длинна массива

206
Почему if-ы в цикле не идут по порядку? (Java)

Почему if-ы в цикле не идут по порядку? (Java)

Дано: монетки номиналом 25, 10, 5, 1 цент

242
что не так с pointcut?

что не так с pointcut?

На tutorialspoint приведен такой пример по спрингу:

240
JavaFX LineChart

JavaFX LineChart

Можно ли добавлять точки кликом мышкой по графику?

221