最近遇到个小问题,就是数据在页面是乱的 后台排序无用 具体原因我就不说了 说下解决办法把 。
首先我使用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:排序后的集合