Rav*_*mar 2 java sorting arraylist
我有一个数组列表
ArrayList itemListWithRank = ItemListDAO.getItemList();
Run Code Online (Sandbox Code Playgroud)
在arraylist中itemListWithRank有许多类型的对象值,它们都是不同的.并且它们中的一个值是也使用该数组列表设置的项目等级.
现在我想根据排名的加入顺序对这个数组列表进行排序.已在此数组列表中设置排名值.
我如何对arraylist进行排序哪一个有很多类型的值....?
谢谢大家....
使它们成为一种类型的对象.设计一个共同的基类或Interface
然后
用Comparator他们理清
例如.
public class SortableFields{
protected long rank;
//accessors methods
}
Run Code Online (Sandbox Code Playgroud)
假设arraylist中的所有对象现在都是SortableFields
现在
Collections.sort(list,new Comparator(){
public int compareTo(Object ob1,Object ob){
return ((SortableFild)ob1.getRank())-((SortableFild)ob2.getRank())
}
});
Run Code Online (Sandbox Code Playgroud)
或者使用反射黑客,不是更好
Collections.sort(list,new Comparator(){
public int compareTo(Object ob1,Object ob){
UtilClass.getRank(ob1)-UtilClass.getRank(ob);
}
});
Run Code Online (Sandbox Code Playgroud)
在您的UtilClass中
public int getRank(Object ob){
Class cl=ob1.getClass();
Method mthd=cl.getMethod("getRank");
Integer output=(Integer)mthd1.invoke(ob);
return output;
}
Run Code Online (Sandbox Code Playgroud)