collections.sort按时间排序问题

yiyuanhong 2010-10-12 04:30:53
想将数据库中的记录按时间排序,一条记录中时间字段类型是String,如2000-01-01 20:20:20
先给你一个list,list是所有记录的集合(注意,不是时间集合),所以估计还先把每条记录的时间提取出来,再排序,最后得到按时间排序的新的list。
哪位高手帮忙解答?
...全文
676 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyuanhong 2010-10-13
  • 打赏
  • 举报
回复
恩,终于解决了,谢谢大侠们了,呵呵
blazingfire 2010-10-13
  • 打赏
  • 举报
回复
类(人嘛,人有一个成员是出生年月birthDay)呀。随便举得一个例子。
list里放的是Man类的实例呀。
qianyecq 2010-10-13
  • 打赏
  • 举报
回复

Collections.sort(list,new Comparator<Test>(){
public int compare(Testarg0, Test arg1) {
return arg0.getDate().compareTo(arg1.getDate());
}
});

Test是你自己定义的数据类
public class Test{
String name;
Date date;
}
Date
yiyuanhong 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caofaping 的回复:]
Java code

public List sortList(List list) {
Collections.sort(list, new Comparator<Man>() {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

……
[/Quote]
好像不太行啊,new Comparator<Man>() 里面的Man到底是代表什么啊?
caofaping 2010-10-12
  • 打赏
  • 举报
回复

public List sortList(List list) {
Collections.sort(list, new Comparator<Man>() {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

private Date getBirthday(Man m) {
if (m == null || m.getBirthday() == null)
return null;
try {
return sdf.parse(m.getBirthday());
} catch (ParseException e) {
return null;
}
}

public int compare(Man o1, Man o2) {
Date d1 = getBirthday(o1);
Date d2 = getBirthday(o2);
if (d1 == null && d2 == null)
return 0;

if (d1 == null)
return -1;
if (d2 == null)
return 1;
return d1.compareTo(d2);
}

});
}

借用一楼的。把list放进去,改下你的对象名和日期,这样也不能满足?
yiyuanhong 2010-10-12
  • 打赏
  • 举报
回复
1楼的代码蛮好的,绝对是可行的。但问题我是在SSH2里想解决这个问题,记录全部是从数据库里读出来的,放在一个list里。如何对这个list进行操作啊?
blazingfire 2010-10-12
  • 打赏
  • 举报
回复
package csdn;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class Test {

public static class Man {

private String birthday;
private String name;

public Man() {
}

public Man(String name, String birthday) {
this.name = name;
this.birthday = birthday;
}

@Override
public String toString() {
return name + " " + birthday;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getBirthday() {
return birthday;
}

public void setBirthday(String birthday) {
this.birthday = birthday;
}
}

public static void main(String[] args) {
List<Man> list = new ArrayList<Man>();
list.add(new Man("张三", "2000-01-01 20:20:20"));
list.add(new Man("李四", "2001-01-01 20:20:20"));
list.add(new Man("王五", "2005-05-01 20:20:20"));
list.add(new Man("BBB", "2003-01-01 20:20:20"));

System.out.println("排序前:" + list);
Collections.sort(list, new Comparator<Man>() {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

private Date getBirthday(Man m) {
if (m == null || m.getBirthday() == null)
return null;
try {
return sdf.parse(m.getBirthday());
} catch (ParseException e) {
return null;
}
}

public int compare(Man o1, Man o2) {
Date d1 = getBirthday(o1);
Date d2 = getBirthday(o2);
if (d1 == null && d2 == null)
return 0;

if (d1 == null)
return -1;
if (d2 == null)
return 1;
return d1.compareTo(d2);
}

});
System.out.println("排序后:" + list);
}

}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧