我试图在compareTo
方法中比较两个字符串和浮点数,但我不确定我的最终值是什么。
以下是我到目前为止实施的compareTo
方法:
ObjectClass otherObj = (ObjectClass)o;
float f1 = this.getValue();
float f2 = otherObj.getValue();
int retValue = Float.compare(f1,f2);
String code1 = this.getCode();
String code2 = otherObj.getCode();
int retValue2 = code1.compareTo(code2);
int finalRet = ??
return finalRet;
如果输入是
hashMap.put(new ObjectClass ("20030122", 0.019f), "20030122");
hashMap.put(new ObjectClass ("20030123", 0.019f), "20030123");
hashMap.put(new ObjectClass ("20030124", 0.011f), "20030124");
我的输出应按此顺序
"20030123", 0.019f
"20030122", 0.019f
"20030124", 0.011f
答案 0 :(得分:0)
为了让您的课程具有可比性,您必须在界面Comparable
中实施当比较应该基于更多单个成员。当前一个结果等于零时,您可以按顺序进行比较。按顺序顺序指定最终排序。
class MyObject implements Comparable<MyObject> {
String message;
long value;
@Override
public int compareTo(MyObject that) {
if(that == null) {
return -1;
}
if(this == that) {
return 0;
}
int result = this.message.compareTo(that.message);
if(result == 0) {
result = Long.compare(this.value,that.value);
}
return result;
}
}
以上示例将以
结果"20030122", 0.019f
"20030123", 0.019f
"20030124", 0.011f