如何更改代码,以便按字母顺序从a到z列出元素。现在它从z到a的排序。我无法理解并陷入困境: - /
String sName1 = ((Address)o).getSurname().toLowerCase();
String sName2 = (this.surname).toLowerCase();
int result = (sName1).compareTo(sName2);
return result;
谢谢:)
答案 0 :(得分:5)
只需交换您正在比较的对象。
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
,您可能想要添加空检查。
另见: