カスタム オブジェクトの配列 ( ListData[]
) を 2 つのフィールドで並べ替えています。テーマごと、名前ごとに並べ替えたいです。カスタムオブジェクトクラスで素晴らしいコンパレータ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個のアイテムで埋めました。