请帮我解决这个问题。我已经尝试编写不同的比较器,但没有一个正常工作。
他们喜欢按部分排序。让它成为像0, 4, 1, 9 , 18, 3, 18, 9.
它的排序如下:9, 9, 0, 1, 3, 18, 18, 4.
有些"有序"随便我会说。
请帮助找出我做错了什么。
包含数据的类和Comparator
:
public class CoursesData {
private String url;
private String name;
private String lessonsCount;
private String isFree;
private String price;
private String language;
private String difficulty;
private AuthorData author;
public static Comparator<CoursesData> CoursesDataPriceComparator = new Comparator <CoursesData> () {
public int compare (CoursesData left, CoursesData right){
return right.getPrice().compareTo(left.getPrice());
}
};
....(getter-setters)
我如何使用这个比较器:
ArrayList<CoursesData> coursesDatas = parserJson.getCourses();
Collections.sort(coursesDatas, CoursesData.CoursesDataPriceComparator);
mAdapter = new CoursesItemAdapter(getActivity(),
R.layout.catalog_list_item, coursesDatas);
价格是字符串,但有数字值。也许是问题......
感谢您的帮助。
答案 0 :(得分:1)
替换
return right.getPrice().compareTo(left.getPrice());
与
return new Double(right.getPrice().trim()).compareTo(
new Double(left.getPrice().trim())
);