我有一个数组列表
ArrayList itemListWithRank = ItemListDAO.getItemList();
并且在arraylist
itemListWithRank
中有很多类型的对象值,这些值都是不同的。其中一个值是也与该数组列表一起设置的项目等级。现在,我想根据排名的顺序对数组列表进行排序。排名值已在此数组列表中设置。
我怎样才能排序其中一个有很多类型的值...的数组列表?
谢谢大家。
最佳答案
使它们都是一种类型的对象。设计通用的基类或Interface
然后
使用Comparator
进行分类
例如。
public class SortableFields{
protected long rank;
//accessors methods
}
假设arraylist中的所有对象现在都是SortableFields
现在
Collections.sort(list,new Comparator(){
public int compareTo(Object ob1,Object ob){
return ((SortableFild)ob1.getRank())-((SortableFild)ob2.getRank())
}
});
或使用反射技巧,不可取
Collections.sort(list,new Comparator(){
public int compareTo(Object ob1,Object ob){
UtilClass.getRank(ob1)-UtilClass.getRank(ob);
}
});
在您的UtilClass中
public int getRank(Object ob){
Class cl=ob1.getClass();
Method mthd=cl.getMethod("getRank");
Integer output=(Integer)mthd1.invoke(ob);
return output;
}