【发布时间】: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<Model>{然后像这样覆盖 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() 方法中编写自己的逻辑,但使用对象的多个属性进行排序并不会产生预期的结果。