在项目中,我们经常需要根据某个对象中的具体字段来排序,以下方法为解决List集合内的排序问题。
List内部对象类为DataModelCols,我们需要根据该对象内的seqnum来排序。具体是用Collections.sort方法实现对List的排序。
这里我写出我们常用的方法,具体分为以下2步。
第一步:
在List的对象类的实体内实现Comparable接口,再在里面重写compareTo方法。
代码如下:
public class DataModelCols extends BaseEntity implements Comparable<DataModelCols>, Serializable { private static final long serialVersionUID = 1415606106467277061L; //ID private Integer colsId; //字段中文描述,输入时显示的字段提示: private String cname; //录入界面显示的排序号 private Integer seqnum; public Integer getColsId() { return colsId; } public void setColsId(Integer colsId) { this.colsId = colsId; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public Integer getSeqnum() { return seqnum; } public void setSeqnum(Integer seqnum) { this.seqnum = seqnum; } @Override public int compareTo(DataModelCols dmc) { if(this.getSeqnum() == null || dmc.getSeqnum() == null) { return 0; } // 根据排序号从小到大顺序。 if(this.getSeqnum().intValue() > dmc.getSeqnum().intValue()){ return 1; } //当排序号相等时,根据主键从小到大排 else if(this.getSeqnum().intValue() == dmc.getSeqnum().intValue()) { return this.getColsId().intValue() > dmc.getColsId().intValue() ? 1 : -1; } else { return -1; } } }
第二步:
初始化好List集合,然后调用Collections.sort()方法来实现排序
具体代码如下:
public static void main(String[] args) {
List<DataModelCols> colsList = new ArrayList<DataModelCols>();
DataModelCols dmc = new DataModelCols();
dmc.setSeqnum(2);
dmc.setColsId(1);
colsList.add(dmc);
dmc = new DataModelCols();
dmc.setSeqnum(1);
dmc.setColsId(1);
colsList.add(dmc);
System.out.println("--------排序前---------");
for (DataModelCols dataModelCols : colsList) {
System.out.println(dataModelCols.getSeqnum());
}
//实现排序
Collections.sort(colsList);
System.out.println("--------排序后---------");
for (DataModelCols dataModelCols : colsList) {
System.out.println(dataModelCols.getSeqnum());
}
}
以上为具体的实现方法,希望对您有用
感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有