java的List集合根据对象中的某个字段排序

在项目中,我们经常需要根据某个对象中的具体字段来排序,以下方法为解决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());
		}
	}

以上为具体的实现方法,希望对您有用

感谢您的阅读,希望对您有帮助,本文版权归 #惊讶# 所有
评论 (0)