kai*_*uki 3 java sorting collections android arraylist
我试图通过声明我自己的匿名比较器使用Collections.sort对我的自定义类数组列表进行排序.但这种方式并没有按预期运作.
我的代码是
Collections.sort(arrlstContacts, new Comparator<Contacts>() {
public int compare(Contacts lhs, Contacts rhs) {
int result = lhs.Name.compareTo(rhs.Name);
if(result > 0)
{
return 1;
}
else if (result < 0)
{
return -1;
}
else
{
return 0;
}
}
});
Run Code Online (Sandbox Code Playgroud)
结果不按排序顺序排列.
Nic*_*olt 10
就像亚当说的那样,只需:
Collections.sort(
arrlstContacts,
new Comparator<Contacts>()
{
public int compare(Contacts lhs, Contacts rhs)
{
return lhs.Name.compareTo(rhs.Name);
}
}
);
Run Code Online (Sandbox Code Playgroud)
该方法String.compareTo执行字典比较,您的原始代码是否定的.例如,字符串number1和number123比较时分别产生-2和2.
通过简单地返回1,0或-1,有机会(正如您所发生的那样)合并排序使用Collections.sort方法的合并部分无法在列表中的字符串之间充分区分,从而导致列表不按字母顺序排序.
如Adam所示,你可以使用return (lhs.Name.compareTo(rhs.Name));likeo:
Collections.sort(arrlstContacts, new Comparator<Contacts>() {
public int compare(Contacts lhs, Contacts rhs) {
return (lhs.Name.compareTo(rhs.Name));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10132 次 |
| 最近记录: |