62,615
社区成员
发帖
与我相关
我的任务
分享
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 synchronized static void main(String[] args) {
}
@Override
public synchronized int compareTo(Beach o) {
if (quality - o.getQuality() != 0 && distance - o.getDistance() !=0) {
return (int) ((quality - o.getQuality()) + ((int)distance-o.getDistance()));
}else {
return 0;
}
}
}
public synchronized int compareTo(Beach o) { //模仿老外,改成以下试试?
return Integer.compare(quality, o.quality) + Float.compare(distance, o.distance);
}
public synchronized int compareTo(Beach o) {
if(this == o)
return 0;
else {
int i = Integer.compare(this.quality, o.quality);
int f = Float.compare(this.distance, o.distance);
int r = i + -f;
return r;
}
}
我偷看了老外的答案是上面那个,他的i和f值是咋得的, Float.compare(this.distance, o.distance);这个语句是什么意思
public synchronized int compareTo(Beach o) { //直接return就好了,没必要if else判断
return (quality-o.getQuality()) + Float.compare(distance, o.getDistance());
}
public synchronized int compareTo(Beach o) {
if (quality - o.getQuality() == 0 && distance - o.getDistance() == 0) {
return 0;
} else {
return (quality - o.getQuality()) + Float.compare(distance, o.getDistance());
}
}
public synchronized int compareTo(Beach o) {
if (quality - o.getQuality() == 0 && distance - o.getDistance() ==0) {
return 0;
}else {
return (quality - o.getQuality()) + Float.compare(distance-o.getDistance()));
}
}
public synchronized int compareTo(Beach o) {
if (quality - o.getQuality() == 0 && distance - o.getDistance() ==0) {
return 0;
}else {
return (int) ((quality - o.getQuality()) + (int)(distance-o.getDistance()));
}
}
[/quote]
@Override
public synchronized int compareTo(Beach o) {
if (quality != o.getQuality()) {
return quality > o.getQuality() ? 1 : -1;
}
if (distance != o.getDistance()) {
return distance > o.getDistance() ? 1 : -1;
}
return 0;
}