在项目中,我们经常需要根据某个对象中的具体字段来排序,以下方法为解决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());
}
}
以上为具体的实现方法,希望对您有用
感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有