Что- то не так написал? У меня все работает
package com.javarush.task.task17.task1714;
/*
Comparable
*/
public class Beach implements Comparable<Beach> {
private String name; //название
private float distance; //расстояние
private int quality; //качество
public Beach(String name, float distance, int quality) {
this.name = name;
this.distance = distance;
this.quality = quality;
}
public synchronized String getName() {
return name;
}
public synchronized void setName(String name) {
this.name = name;
}
public synchronized float getDistance() {
return distance;
}
public synchronized void setDistance(float distance) {
this.distance = distance;
}
public synchronized int getQuality() {
return quality;
}
public synchronized void setQuality(int quality) {
this.quality = quality;
}
public static void main(String[] args) {
// Beach beach = new Beach("Морячок",10,15);
//// Beach beach3 = new Beach("Морячок",10,15);
// Beach beach2 = new Beach("Ракушка",20,50);
// System.out.println(beach2.compareTo(beach));
}
@Override // если аргумент имеет больше значение , то значение меньше 0
public synchronized int compareTo(Beach o) {
int result = 0;
int r = name.compareTo(o.name);
if(r > 0 ){
result++;
}else if(r < 0){
result--;
}int r2 = Float.compare(distance,o.distance);
if(r2 > 0 ){
result++;
}else if(r2 < 0){
result--;
}
int r3 = Integer.compare(quality,o.quality);
if(r3 > 0 ){
result++;
}else if(r3 < 0){
result--;
}
return result;
}
// @Override
// public synchronized int compareTo(Beach o) {
// int result;
// result = Float.compare(distance,o.distance);
// return result;
//
// }
}
// return Comparator.comparing(Person::getFirstName) VARIANT -1
//// .thenComparing(Person::getLastName)
//// .thenComparingInt(Person::getAge)
//// .compare(this, o);
// int result;
// result = name.compareTo(o.name);
// if(result != 0) return result;
// result= Float.compare(distance,o.distance);
// if(result != 0)return result;
// result = Integer.compare(quality,o.quality);
// if(result != 0 ) return result;
// return result;
// int result = getName().compareTo(o.getName());
// int result2 = Float.compare(getDistance(),o.getDistance());
// int result3 = Integer.compare(getQuality(), o.getQuality());
//
// return result + result2 + result3 ;