读书人

java中List对象排序通用步骤

发布时间: 2013-03-21 10:08:17 作者: rapoo

java中List对象排序通用方法

在数据库中查出来的列表中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能。

只要把第一次查出来的结果存放在session中,就可以对list重新排序了。一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的。如果有下面这个对象:

//Test.javapackage test;import java.util.ArrayList;import java.util.List;import java.text.SimpleDateFormat;public class Test {public static void main(String[] args)throws Exception{List<UserInfo> list = new ArrayList<UserInfo>();SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");list.add(new UserInfo(3,"b",formater.parse("1980-12-01"),11));list.add(new UserInfo(1,"c",formater.parse("1980-10-01"),30));list.add(new UserInfo(2,"a",formater.parse("1973-10-01"),11));System.out.println("-------原来序列-------------------");for(UserInfo user : list){System.out.println(user.toString());}//调用排序通用类SortList<UserInfo> sortList = new SortList<UserInfo>();//按userId排序sortList.Sort(list, "getUserId", "desc");System.out.println("--------按userId倒序------------------");for(UserInfo user : list){System.out.println(user.toString());}//按username排序sortList.Sort(list, "getUsername", null);System.out.println("---------按username排序-----------------");for(UserInfo user : list){System.out.println(user.toString());}//按birthDate排序sortList.Sort(list, "getBirthDatestr", null);System.out.println("---------按birthDate排序-----------------");for(UserInfo user : list){System.out.println(user.toString());}}}


运行结果如下:

-------原来序列-------------------

3; b; 1980-12-01; 11

1; c; 1980-10-01; 30

2; a; 1973-10-01; 11

--------按userId倒序------------------

3; b; 1980-12-01; 11

2; a; 1973-10-01; 11

1; c; 1980-10-01; 30

---------按username排序-----------------

2; a; 1973-10-01; 11

3; b; 1980-12-01; 11

1; c; 1980-10-01; 30

---------按birthDate排序-----------------

2; a; 1973-10-01; 11

1; c; 1980-10-01; 30

3; b; 1980-12-01; 11

注意:日期的排序是先通过格式转换的,再来排序的,否则将不能有正确的结果。

读书人网 >编程

热点推荐