ArrayList的排序

Rav*_*mar 2 java sorting arraylist

我有一个数组列表

ArrayList itemListWithRank = ItemListDAO.getItemList();
Run Code Online (Sandbox Code Playgroud)

在arraylist中itemListWithRank有许多类型的对象值,它们都是不同的.并且它们中的一个值是也使用该数组列表设置的项目等级.

现在我想根据排名的加入顺序对这个数组列表进行排序.已在此数组列表中设置排名值.

我如何对arraylist进行排序哪一个有很多类型的值....?

谢谢大家....

Jig*_*shi 6

使它们成为一种类型的对象.设计一个共同的基类或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)