如何比较compareTo中的字符串和浮点数

时间:2014-04-15 16:41:44

标签: java compareto

我试图在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

1 个答案:

答案 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