2010-05-28 144 views
1

如何更改我的代码,以便按字母顺序从a到z列出元素。现在它从z到a排序。我不出去,我坚持: -/如何进行比较按字母顺序排序列表?

String sName1 = ((Address)o).getSurname().toLowerCase(); 
    String sName2 = (this.surname).toLowerCase(); 
    int result = (sName1).compareTo(sName2); 

    return result; 

谢谢:)

回答

5

只是交换你要比较的对象。

int result = (sName2).compareTo(sName1); 

通常情况下,对于升序排序,你想左手边是部分原因对象和右边是其他对象的一部分。对于降序排序,你只需交换双方(你最初做的)。

为了使你的代码更直观,我宁可不过交换的sName1sName2的分配:

String sName1 = (this.surname).toLowerCase(); 
String sName2 = ((Address)o).getSurname().toLowerCase(); 
int result = (sName1).compareTo(sName2); 

,摆脱了匈牙利命名法和不必要的括号,以及。下面总结说:

public class Address implements Comparable<Address> { 
    private String surname; 
    // ... 

    public int compareTo(Address other) { 
     return this.surname.toLowerCase().compareTo(other.surname.toLowerCase()); 
    } 
} 

您可能需要添加nullchecks如果你不能保证姓从未null

参见:

+2

,摆脱不需要的括号。 – 2010-05-29 00:03:58

+1

可以进一步简化: public int compareTo(Address other){ return this.surname.compareToIgnoreCase(other.surname); } – objects 2010-05-29 00:52:37

+0

同样摆脱变量之前不必要的“this”。 – 2010-05-29 01:41:17