[英]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);
通常,對於升序排序,您希望左側是該對象的一部分,而右側是另一對象的一部分。 對於降序排序,您只需交換兩面(因此您最初進行了交換)。
為了使您的代碼更直觀,我寧願交換sName1
和sName2
的分配:
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.