2014-04-15 54 views
-2

我想比较这两个字符串和浮动compareTo方法,但我不知道我的最终值将是什么。如何比较两个字符串和floatTo 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

什么语言呢? – Tyler

+0

你期待什么结果?例如。如果比较“1.0,B”和“2.0,A”,这是“少于另一个”(以及为什么)? –

+0

@Tyler:这是用Java编写的。 – user2500313

回答

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 
+0

我使用了可比的界面。 ...问题与compareTo实现...顺序是浮点数和字符串比较的组合...我们期望的输出是首先我们获取最高浮点值,如果有重复值可用该浮点值的映射我们正在考虑在此例中为“20030123”,0.019f ...而不是20030122“的密钥中的最大值,0.019f – user2500313