List集合數據重新排序解決方案

最近遇到個小問題,就是數據在頁面是亂的  後臺排序無用  具體原因我就不說了 說下解決辦法把  。

首先我使用java.util.Collections; Collections.sort(list<?>);  來解決這個問題

根據後臺數據  創建一個bean  如  數據中有  A,B,C,D四個字段

 

 

創建一個Record類類名隨意  實現Comparable   再序列化Serializable   

package com.hd.rcugrc.project.oa.publicBusinesApproval.entity;

import java.io.Serializable;
import java.util.Date;

public class Record implements Serializable, Comparable<Record>{

	/**
	 * 
	 */
	private static final long serialVersionUID = 7427050133781922329L;
	private  int STATUS;
	private int INSTID             ;
	private int ENTITYID           ;
	private String TE_SERIAL_NUMBER   ;
	private int PRINT_STATUS       ;
	private int ID                 ;
	private String DOC_TITLE          ;
	private int rn;
	private Date DRAFT_TIME         ;
	private String REASON             ;
	private String  FORM_ID           ;
	
//	 public Record() {
//		         this.TE_SERIAL_NUMBER = TE_SERIAL_NUMBER;
//		     
//		     }
	
	@Override
	public int compareTo(Record o) {
		String NUMBER = this.TE_SERIAL_NUMBER;
		 int startIndex = 0;
		if(Integer.valueOf(NUMBER) < Integer.valueOf(o.TE_SERIAL_NUMBER)) {
			startIndex = 1;
		}else {
			startIndex = -1;
		}
		return startIndex;
	}

	public int getSTATUS() {
		return STATUS;
	}

	public void setSTATUS(int sTATUS) {
		STATUS = sTATUS;
	}

	public int getINSTID() {
		return INSTID;
	}

	public void setINSTID(int iNSTID) {
		INSTID = iNSTID;
	}

	public int getENTITYID() {
		return ENTITYID;
	}

	public void setENTITYID(int eNTITYID) {
		ENTITYID = eNTITYID;
	}

	public String getTE_SERIAL_NUMBER() {
		return TE_SERIAL_NUMBER;
	}

	public void setTE_SERIAL_NUMBER(String tE_SERIAL_NUMBER) {
		TE_SERIAL_NUMBER = tE_SERIAL_NUMBER;
	}

	public int getPRINT_STATUS() {
		return PRINT_STATUS;
	}

	public void setPRINT_STATUS(int pRINT_STATUS) {
		PRINT_STATUS = pRINT_STATUS;
	}

	public int getID() {
		return ID;
	}

	public void setID(int iD) {
		ID = iD;
	}

	public String getDOC_TITLE() {
		return DOC_TITLE;
	}

	public void setDOC_TITLE(String dOC_TITLE) {
		DOC_TITLE = dOC_TITLE;
	}

	public int getRn() {
		return rn;
	}

	public void setRn(int rn) {
		this.rn = rn;
	}

	public Date getDRAFT_TIME() {
		return DRAFT_TIME;
	}

	public void setDRAFT_TIME(Date dRAFT_TIME) {
		DRAFT_TIME = dRAFT_TIME;
	}

	public String getREASON() {
		return REASON;
	}

	public void setREASON(String rEASON) {
		REASON = rEASON;
	}

	public String getFORM_ID() {
		return FORM_ID;
	}

	public void setFORM_ID(String fORM_ID) {
		FORM_ID = fORM_ID;
	}

	@Override
	public String toString() {
		return "Record [STATUS=" + STATUS + ", INSTID=" + INSTID + ", ENTITYID=" + ENTITYID + ", TE_SERIAL_NUMBER="
				+ TE_SERIAL_NUMBER + ", PRINT_STATUS=" + PRINT_STATUS + ", ID=" + ID + ", DOC_TITLE=" + DOC_TITLE
				+ ", rn=" + rn + ", DRAFT_TIME=" + DRAFT_TIME + ", REASON=" + REASON + ", FORM_ID=" + FORM_ID + "]";
	}

	
	
 	
	
}

在compareTo 方法中寫我們的排序條件

重點排序功能在這

@Override
    public int compareTo(Record o) {//
        String NUMBER = this.TE_SERIAL_NUMBER;

//獲取需要排序的字段
         int startIndex = 0;
        if(Integer.valueOf(NUMBER) < Integer.valueOf(o.TE_SERIAL_NUMBER)) {

//判斷大小 
            startIndex = 1;
        }else {
            startIndex = -1;
        }
        return startIndex;
    }

//-------------------------------------------------

那個方法可以後面寫  先使用

    List<Record> listRecord = new ArrayList<Record>();

new一個Array 

將需要排序的數據  循環放入  

 for (int i = 0; i < list.size(); i++) {

   Record rco = new Record();//我們創建用來排序的Bean

     Map ma = (Map) list.get(i);//獲取每條數據  這裏根據你數據形式來

        String TE_SERIAL_NUMBER =  (String) ma.get("TE_SERIAL_NUMBER");//我這裏只拿一個字段演示因爲要用這個字段排序就用這個字段了

 rco.setTE_SERIAL_NUMBER(TE_SERIAL_NUMBER);

}

Collections.sort(listRecord);//將list進行排序

這個時候就會進入compareTo  進行排序 

無需接收返回值  listRecord 在經過這個方法以後就是排序後的數據集合

直接使用或者返回前臺即可

算了  截個圖給你看吧。。。

1:需要排序的list集合,數據錯亂狀態

2:自定義的Bean

3:我們自定義Bean爲泛型的ArrayList  

4:排序方法類.sort排序方法  傳入3

5:Set進數據的list 

6:排序後的集合

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章