С documentation из Collections.sort(List<T>)
вы можете увидеть
Все элементы в списке должны реализовывать интерфейс Сопоставимые
, которая предписана
public static <T extends Comparable<? super T>> void sort(List<T> list)
Так список должен быть объявлен для хранения элементов типа, который простирается/реализует Comparable
но Point2D.Double
не реализует Comparable
поэтому не является допустимым типом.
Для этих случаев Java добавляет
public static <T> void sort(List<T> list, Comparator<? super T> c)
метода, который позволяет вам создать свой собственный компаратор, чтобы вы могли сравнить элементы, которые не реализуют Сопоставимыми, или для сравнения их по-другому, чем предопределенные.
Так что ваш код может выглядеть
Collections.sort(serie, new Comparator<Point2D.Double>() {
public int compare(Point2D.Double p1, Point2D.Double p2) {
return Double.compare(p1.getX(), p2.getX());
}
});
или вы можете записать его в Java 8, как
Collections.sort(serie, Comparator.comparingDouble(Point2D.Double::getX));
или даже
serie.sort(Comparator.comparingDouble(Point2D.Double::getX));
показать нам исключение –
«, но это показывает, что есть ошибка: «вам нужно быть более конкретным. Сообщение об ошибке, с которой вы сталкиваетесь (1), позволяет другим с подобной ошибкой найти ваш вопрос и возможные ответы (2), чтобы люди, которые знают, что такое ошибка, означает запись ответа, прежде чем создавать код, который будет воспроизводить вашу проблему. – Pshemo
Вы получаете ошибку компиляции? Если это так, вам нужно предоставить собственный компаратор, потому что класс 'Point2D.Double' не реализует интерфейс' Comparable'. – kraskevich