我有一个数组列表

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;

}

07-25 21:38