Например, мы имеем следующий класс:
public class Person{
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
И мне необходимо их отсортировать по имени и возрасту.
Например: если будут (Andrey, 24)
и (Vlad, 13)
вывести Andrey и 13 соответственно по алфавиту и номеру возрастания. Какую коллекцию мне использовать? При использовании TreeSet выдает ошибку Comporable.
Достаточно засунуть ф-ю с сигнатурой int compareTo(T t1, T t2)
в конструктор(Пример сортировки по имени и возрасту):
TreeSet<User> treeSet = new TreeSet<User>((User a, User b) -> {
int compareResult = a.getName().compareTo(b.getName());
return compareResult == 0 ? a.getAge() - b.getAge() : compareResult;
});
Также можно использовать другие коллекции - любые коллекции, реализующие интерфейс List, если вам не нужно, чтобы коллекция всегда была отсортирована(Например, ArrayList
):
List<User> arrayList = new ArrayList();
arrayList.sort((User a, User b) -> {
int compareResult = a.getName().compareTo(b.getName());
return compareResult == 0 ? a.getAge() - b.getAge() : compareResult;
});
А если хочется эти два примера, но покороче:
TreeSet<User> treeSet = new TreeSet<User>(Comparator.comparing(User::getName).thenComparing(Comparator.comparing(User::getAge)));
arrayList.sort(Comparator.comparing(User::getName).thenComparing(Comparator.comparing(User::getAge)));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
При запуске проекта на Java, с использованием Spring появляется ошибка: "This application has no explicit mapping for /error, so you are seeing this as a fallback" Данное приложение представляет...
Решил задачу, но как я понял просто TreeSet без лишних методов для сортировки классов не годитсяВыдает ошибку: cannot be cast to class java
Весь цикл записи и чтения работает на ура, но новые значения появляются снизу БД: