当前位置: 首页 > 面试题库 >

ArrayList的排序

柯易安
2023-03-14
问题内容

我有一个数组列表

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;

}


 类似资料:
  • 我有一个ArrayList of String。 在每个索引上的外部ArrayList中,每个内部ArrayList有四个项目,有四个参数。 联系人ID 联系人姓名 联系地址 联系号码 现在,我想根据Contact Name参数对的完整ArrayList进行排序。 意味着我要访问外部Arraylist,外部Arraylist的每个索引上存在的内部Arraylist应该根据联系人名称进行排序。 比较

  • 比如说,我在(公共类class1(String args[]))中创建了一个arraylist 这是一个函数,例如: 我将它传递到一个函数中,希望它只对list进行排序,而不对list1进行排序,但是list1也进行了排序,我不明白为什么会这样。因此,请向我解释为什么会这样,以及有什么解决这个错误的方法?

  • 问题内容: 仅对ArrayList的一部分进行排序的 最有效 方法是什么?说一个包含10个元素的Arraylist中从索引0到3的所有元素。 Java中有可用的库函数吗? 除了排序整个列表! 编写高度优化的自定义排序功能将需要一些工作。 问题答案: 在文档中对此进行了描述: 公共列表subList(int fromIndex,int toIndex) 返回此列表中指定的fromIndex(包括)和

  • 我想用java对数字数组列表进行排序,所以基本上如果我有以下数组列表: 输出应为: arraylist应该根据第一个键然后第二个键进行排序。