diff --git a/src/main/java/ru/erius/lab5/data/Coordinates.java b/src/main/java/ru/erius/lab5/data/Coordinates.java index aa7c38e..aaa4ba6 100644 --- a/src/main/java/ru/erius/lab5/data/Coordinates.java +++ b/src/main/java/ru/erius/lab5/data/Coordinates.java @@ -9,7 +9,7 @@ import lombok.ToString; * Класс данных координат */ @Data @NoArgsConstructor @EqualsAndHashCode @ToString -public class Coordinates { +public class Coordinates implements Comparable { /** * Координата X типа float @@ -45,4 +45,13 @@ public class Coordinates { throw new IllegalArgumentException("Поле y класса Coordinates должно быть больше -816"); this.y = y; } + + private double distance() { + return Math.sqrt(x * x + y * y); + } + + @Override + public int compareTo(Coordinates other) { + return Double.compare(this.distance(), other.distance()); + } } diff --git a/src/main/java/ru/erius/lab5/data/Location.java b/src/main/java/ru/erius/lab5/data/Location.java index d7fbf20..c42e38e 100644 --- a/src/main/java/ru/erius/lab5/data/Location.java +++ b/src/main/java/ru/erius/lab5/data/Location.java @@ -68,7 +68,7 @@ public class Location implements Comparable { */ @Override public int compareTo(Location other) { - return Comparator.comparing((Location loc) -> loc.name) + return Comparator.comparing(Location::getName) .thenComparing(Location::distance) .compare(this, other); } diff --git a/src/main/java/ru/erius/lab5/data/Person.java b/src/main/java/ru/erius/lab5/data/Person.java index 1dfdaa5..ffa067c 100644 --- a/src/main/java/ru/erius/lab5/data/Person.java +++ b/src/main/java/ru/erius/lab5/data/Person.java @@ -171,12 +171,15 @@ public class Person implements Comparable { */ @Override public int compareTo(Person other) { - return Comparator.comparing((Person p) -> p.name) - .thenComparing(p -> p.passportID) - .thenComparing(p -> p.height) - .thenComparing(p -> p.nationality) - .thenComparing(p -> p.location) - .thenComparing(p -> p.eyeColor) + return Comparator.comparing(Person::getName) + .thenComparing(Person::getPassportID) + .thenComparing(Person::getHeight) + .thenComparing(Person::getCreationDate) + .thenComparing(p -> p.getNationality().toString()) + .thenComparing(Person::getLocation) + .thenComparing(Person::getCoordinates) + .thenComparing(p -> p.getEyeColor().toString()) + .thenComparing(Person::getId) .compare(this, other); } }