想将数据库中的记录按时间排序,一条记录中时间字段类型是String,如2000-01-01 20:20:20
先给你一个list,list是所有记录的集合(注意,不是时间集合),所以估计还先把每条记录的时间提取出来,再排序,最后得到按时间排序的新的list。
哪位高手帮忙解答?

解决方案 »

  1.   

    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);
        }}
      

  2.   

    1楼的代码蛮好的,绝对是可行的。但问题我是在SSH2里想解决这个问题,记录全部是从数据库里读出来的,放在一个list里。如何对这个list进行操作啊?
      

  3.   


     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放进去,改下你的对象名和日期,这样也不能满足?
      

  4.   

    好像不太行啊,new Comparator<Man>() 里面的Man到底是代表什么啊?
      

  5.   


    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
      

  6.   

    类(人嘛,人有一个成员是出生年月birthDay)呀。随便举得一个例子。
    list里放的是Man类的实例呀。