【问题标题】:How to sort heterogeneous list in java? [duplicate]如何在java中对异构列表进行排序? [复制]
【发布时间】:2018-02-16 21:54:03
【问题描述】:

这里我给出了一个异构的arraylist。我需要分别将 arraylist 排序为 Assenting 和 Descending 顺序。

Model model;
String[] arr={"A2","4","2","1","A3","3","A1"};

ArrayList<Model> list=new ArrayList<>;
for(int i=0;i<arr.length();i++){
    model=new Model();
    model.setBookNum(arr[i]);
    model.setBookPos(i);
    list.add(model);
} 

这是模型类

public class Model {
private  String  BookNum="";
private  int BookPos="";

   public String getBookNum() {
       return BookNum;
   }

   public void setBookNum(String bookNum) {
       BookNum = bookNum;
   }

   public String getBookPos() {
       return BookPos;
   }

   public void setBookPos(String bookPos) {
       BookPos = bookPos;
   }
}

Assenting order 中的预期结果是 1, 2, 3, 4, A1, A2, A3 & Descending order 是 A3, A2, A1, 4, 3, 2, 1。

【问题讨论】:

  • 首先 - 每次添加到列表时都需要创建一个新对象。第二 - 您可以通过使 Model 类 Comparable class Model implements Comparable&lt;Model&gt;{ 然后像这样覆盖 toCompare() 方法来实现排序以实现升序排序 @Override public int compareTo(Model model) { return this.getBookNum().compareTo(model.getBookNum()); } 现在这个 Collections.sort(list); 将按升序对列表进行排序。在 compareTo() 方法中交换对象将按降序排序。
  • @JavaYouth 如果在模型类中有多个项目,那么如何排序。我只是编辑问题。因为在 Model Class 我有多个项目。 & 我已经申请 Collections.sort(list); 然后输出是 Undefined
  • 通常,我们根据对象的任何属性对对象进行排序。例如:如果我有一个 Employee 对象,其属性为 id 和 name。我要么按 id 排序,要么按名称排序。虽然您可以在 compareTo() 方法中编写自己的逻辑,但使用对象的多个属性进行排序并不会产生预期的结果。

标签: java android


【解决方案1】:

这样做。

//Sorts the list ascending order
Collections.sort(list);

//Reverses the sorted list so it is effectively Descending order
Collections.reverse(list);

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 2020-02-10
    • 2013-12-06
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多