Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
P[] ps = {new P("A", 2), new P("C", 1), new P("B", 3)};
Arrays.sort(ps);
for (P p : ps) { System.out.print(p.name()); }
}
}
record P(String name, int age) implements Comparable<P> {
public int compareTo(P o) { return Integer.compare(age, o.age); }
}CAB
- Ждать имена по алфавиту:
Arrays.sortиCollections.sortследуютcompareTo, а здесь он сравниваетage, поэтому первым идёт самый младший. - Ждать старших первыми:
compareToвозвращает отрицательное число, когдаthisидёт раньше, аInteger.compare(age, o.age)отрицателен для меньшего возраста.
- Как изменить
compareTo, чтобы сортировать от старших к младшим? - Что будет, если
Pне реализуетComparable, а вы вызоветеArrays.sort?