如何进行比较按字母顺序对列表进行排序?

时间:2010-05-28 23:05:35

标签: java

如何更改代码,以便按字母顺序从a到z列出元素。现在它从z到a的排序。我无法理解并陷入困境: - /

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

    return result;

谢谢:)

1 个答案:

答案 0 :(得分: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());
    }
}

如果您不能保证姓氏永远不会null,您可能想要添加空检查。

另见: