日期:2014-05-17  浏览次数:20893 次

怎样按日期排序LIST集合???
LIST集合是从多个表查询的数据
需要按集合中数据的日期时间排序???不知有何好的方法?

效果:

  日期 姓名 性别
  2010-1-10 22:22 李xx 男
  2010-5-1 10:11 孙xx 男
  2010-3-22 21:11 王xx 女
  2010-3-22 20:09 姜xx 女

排后:
  2010-1-10 22:22 李xx 男
  2010-3-22 20:09 姜xx 女
  2010-3-22 21:11 王xx 女
  2010-5-1 10:11 孙xx 男

------解决方案--------------------
如果是在查詢數據庫時進行排序,可以在查詢語句中加上order by日期字段。如果是對一個List進行排序,可先編寫comparator排序的方法,然後再用Collections.sort(list, comparator)實現。不知對你有無幫助。
------解决方案--------------------
你只要自定义一个方法就可以了
例子如下:
排序的方法类
import java.util.Comparator;
public class A implements Comparator<Object>{
public int compare(Object o1, Object o2) {
C c1=(C)o1;
C c2=(C)o2;
int flag=c1.getStuDate().compareTo(c2.getStuDate());
return flag;
}
}

实体类
public class C {
private String stuDate;
private String stuName;
private String stuSex;

/**
* @return the stuName
*/
public String getStuName() {
return stuName;
}
/**
* @return the stuDate
*/
public String getStuDate() {
return stuDate;
}
/**
* @param stuDate the stuDate to set
*/
public void setStuDate(String stuDate) {
this.stuDate = stuDate;
}
/**
* @param stuName the stuName to set
*/
public void setStuName(String stuName) {
this.stuName = stuName;
}
/**
* @return the stuSex
*/
public String getStuSex() {
return stuSex;
}
/**
* @param stuSex the stuSex to set
*/
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
}

测试类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class B {
public static void main(String[] args) {

List<C> list = new ArrayList<C>();
C c1= new C();
c1.setStuDate("2010-1-10 22:22");
c1.setStuName("李xx");
c1.setStuSex("男");
list.add(c1);

C c2= new C();
c2.setStuDate("2010-5-1 10:11");
c2.setStuName("孙xx");
c2.setStuSex("男");
list.add(c2);

C c3= new C();
c3.setStuDate("2010-3-22 21:11");
c3.setStuName("王xx");
c3.setStuSex("女");
list.add(c3);

C c4= new C();
c4.setStuDate("2010-3-22 20:09");
c4.setStuName("姜xx");
c4.setStuSex("女");
list.add(c4);

A cm = new A();
Collections.sort(list,cm);
for(int i=0;i<list.size();i++){
C c=list.get(i);
System.out.println(c.getStuDate()+" "+c.getStuName()+" "+c.getStuSex());
}
}
}

第一次你可以把
A cm = new A();
Collections.sort(list,cm);
这两行代码注释上,就是按添加顺序输出
结果:
2010-1-10 22:22 李xx 男
2010-5-1 10:11 孙xx 男
2010-3-22 21:11 王xx 女
2010-3-22 20:09 姜xx 女

第二次你把这两行释放
就是排好序号的输出了
结果:
2010-1-10 22:22 李xx 男
2010-3-22 20:09 姜xx 女
2010-3-22 21:11 王xx 女
2010-5-1 10:11 孙xx 男

------解决方案--------------------
用Collections.sort(list)方法就行啦,
這是我原來寫的
Java code

public class CreateTime implements Comparable{
    private int index;
    private Date date;
    
    public CreateTime(){
        Collections.sort(list)
    }
    
    public CreateTime(int index,Date date){
        t