如何进行比较按字母顺序排序列表?
问题描述:
如何更改我的代码,以便按字母顺序从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());
}
}
您可能需要添加nullchecks如果你不能保证姓从未null
。
参见:
,摆脱不需要的括号。 – 2010-05-29 00:03:58
可以进一步简化: public int compareTo(Address other){ return this.surname.compareToIgnoreCase(other.surname); } – objects 2010-05-29 00:52:37
同样摆脱变量之前不必要的“this”。 – 2010-05-29 01:41:17