我ListData[]
在两个字段上对一组自定义对象 ( ) 进行排序。我希望它按主题排序,并按名称排序。我认为我在自定义对象类中做了一个很好的比较器,我可以用它Arrays.sort(ld)
来使我的代码工作并排序我的数组。但显然我做错了什么......
我的自定义对象:
public class ListData implements Comparable<ListData>{
public int venueID;
public String name;
public String photoUrl;
public String tip;
public String theme;
@Override
public int compareTo(ListData ld0) {
return this.venueID- ld0.venueID;
}
public static Comparator<ListData> ListDataThemeAndNameComparator = new Comparator<ListData>() {
@Override
public int compare(ListData ld1, ListData ld2) {
String compareTheme1 = ld1.theme.toUpperCase();
String compareTheme2= ld2.theme.toUpperCase();
String compareName1 = ld1.name.toUpperCase();
String compareName2= ld2.name.toUpperCase();
//ascending
int comp = compareTheme1.compareTo(compareTheme2); // comp themes
if(comp==0){ // same theme
comp= compareName1.compareTo(compareName2); // compare names
}
return comp;
}
};
}
在我的主要活动中,我有:
ListData ld[]= new ListData[jsonResponse.size()];
(some code filling my ListData array)
Arrays.sort(ld, ListData.ListDataThemeAndNameComparator); // compare by theme and then by name
有谁知道我做错了什么?
我编辑了我的代码但它仍然失败,现在在compareTheme1 = ld1.theme.toUpperCase();
. 但我确信我的数组不是空的,我在对其进行排序之前将其记录在一行中,并且它填充了大约 500 个项目。