簡體   English   中英

如何比較以字母順序對列表進行排序?

[英]How to make compareTo sort a list alphabetically?

如何更改代碼,使其按字母順序從a到z列出元素。 現在,它的順序是從z到a。 我無法弄清楚並被卡住了:-/

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

    return result;

謝謝 :)

只需交換要比較的對象。

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 ,則可能需要添加nullchecks。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM