import java.util.Comparator;
public class KeyValueComparator implements Comparator<KeyValue> {
/** desc */
public int compare(KeyValue o1, KeyValue o2) {
if (o1.getValue() > o2.getValue()) {
return -1;
} else if (o1.getValue() == o2.getValue()) {
if (o1.getKey().equals(o2.getKey())) {
//o1 == o2
return 0;
} else {
return -1;
}
} else if (o1.getValue() < o2.getValue()) {
return 1;
}
return 0;
}
public boolean equals(Object obj) {
return false;
}
}
return 0 表示这两个对象相等。尽量做到compare(x,y) == 0 则 x.equals(y) == true.虽然这不是强制的,但一定要这样才严密。
class KeyValue {
private String key;
private int value;
public KeyValue(String key, int value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
@Override
public boolean equals(Object o) {
KeyValue kv = (KeyValue) o;
return this.key.equals(kv.getKey()) && this.value == kv.getValue();
}
@Override
public String toString() {
return "key=" + key + " value = " + value;
}
}