java list bean 排序_由bean组成的list根据某一字段排序

1 packagecom.chinfotech.common.util;2 importjava.util.ArrayList;3 importjava.util.Collections;4 importjava.util.Comparator;5 importjava.util.LinkedHashMap;6 importjava.util.List;7 importjava.util.Map;8

9 importorg.apache.commons.beanutils.BeanComparator;10 importorg.apache.commons.collections.ComparatorUtils;11 importorg.apache.commons.collections.comparators.ComparableComparator;12 importorg.apache.commons.collections.comparators.ComparatorChain;13 importorg.apache.commons.collections.comparators.NullComparator;14

15 importcom.chinfotech.scenicManage.bean.SaleTim;16 /**

17 *18 *@authorgaomengqin19 * 将bean封装成list后按照某一字段排序20 *21 */

22

23 public classListSort {24

25 /**

26 * bean的某一个属性27 *@paramlist:列表名称28 *@paramfiledName:属性名称29 *@paramascFlag:true;升序;false:降序30 */

31 @SuppressWarnings("unchecked")32 public static void sort(List list, String filedName, booleanascFlag) {33

34 if (list.size() == 0 || filedName.equals("")) {35 return;36 }37 Comparator> cmp =ComparableComparator.getInstance();38 //判断升序还是降序

39 if(ascFlag) {40 cmp =ComparatorUtils.nullLowComparator(cmp);41 } else{42 cmp =ComparatorUtils.reversedComparator(cmp);43

44 }45 Collections.sort(list, newBeanComparator(filedName, cmp));46 }47

48 /**

49 * bean根据某几个属性排序50 *@parambeans51 *@paramsortParam52 */

53 @SuppressWarnings({ "rawtypes", "unchecked"})54 public static void sortExecute(List> beans, MapsortParam) {55

56 //判断beans和排序规则是否有内容

57 if (beans.size() == 0 || sortParam.keySet().size() == 0) {58 return;59 }60

61 //判断beans和排序规则是否有内容

62 if (beans.isEmpty() ||sortParam.isEmpty()) {63 return;64 }65 ComparatorChain comparator = newComparatorChain();66 boolean sortMethod = false;67 for(String itemName : sortParam.keySet()) {68 sortMethod = false;69 if ("desc".equals(sortParam.get(itemName))) {70 sortMethod = true;71 }72 comparator.addComparator(new BeanComparator(itemName, newNullComparator()), sortMethod);73 }74 Collections.sort(beans, comparator);75 }76

77 public static voidmain(String[] args)78 {79 //TODO Auto-generated method stub80

81 //1、单纯的列表为例

82 ArrayList lst = newArrayList();83 lst.add("00000000001");84 lst.add("00000000002");85 lst.add("00000000003");86 lst.add("00000000004");87 lst.add("00000000005");88 //单纯调用升序,无需改写方法

89 Collections.sort(lst);90 System.out.println(lst.toString());91 //单纯调用降序,无需改写方法

92 Collections.reverse(lst);93 System.out.println(lst.toString());94 //2、List> beans 为例

95 List list = new ArrayList();96 SaleTim sb;97 sb = newSaleTim();98 sb.setCheck("1006");99 sb.setSale("3456");100 sb.setTime("18:00");101 list.add(sb);102

103 sb = newSaleTim();104 sb.setCheck("2378");105 sb.setSale("1265");106 sb.setTime("17:00");107 list.add(sb);108

109 sb = newSaleTim();110 sb.setCheck("1026");111 sb.setSale("2390");112 sb.setTime("19:30");113 list.add(sb);114

115 sb = newSaleTim();116 sb.setCheck("2900");117 sb.setSale("1089");118 sb.setTime("15:30");119 list.add(sb);120

121

122 sb = newSaleTim();123 sb.setCheck("2000");124 sb.setSale("3678");125 sb.setTime("16:30");126 list.add(sb);127

128 sb = newSaleTim();129 sb.setCheck("4500");130 sb.setSale("4000");131 sb.setTime("17:30");132 list.add(sb);133 System.out.println("***********原序*************");134 //原序

135 for(SaleTim item : list){136 System.out.print(item.getCheck()+" ");137 System.out.print(item.getSale()+" ");138 System.out.println(item.getTime());139 }140

141 //降順

142 System.out.println("***********check:降序*************");143 ListSort.sort(list, "check", false);144 for(SaleTim item : list){145 System.out.print(item.getCheck()+" ");146 System.out.print(item.getSale()+" ");147 System.out.println(item.getTime());148 }149 //昇順

150 System.out.println("***********check:升序*************");151 ListSort.sort(list, "check", true);152 for(SaleTim item : list){153 System.out.print(item.getCheck()+" ");154 System.out.print(item.getSale()+" ");155 System.out.println(item.getTime());156 }157 //昇順

158 System.out.println("***********time:升序*************");159 ListSort.sort(list, "time", true);160 for(SaleTim item : list){161 System.out.print(item.getCheck()+" ");162 System.out.print(item.getSale()+" ");163 System.out.println(item.getTime());164 }165 //降順

166 System.out.println("***********time:降序*************");167 ListSort.sort(list, "time", false);168 for(SaleTim item : list){169 System.out.print(item.getCheck()+" ");170 System.out.print(item.getSale()+" ");171 System.out.println(item.getTime());172 }173 System.out.println("***********check:升序 time:降序*************");174 //3、LIST>beans 多个属性叠加排序

175 Map sortParam = new LinkedHashMap();176 //check:昇順 time:降順

177 sortParam.put("check", "asc");178 sortParam.put("time", "desc");179 ListSort.sortExecute(list, sortParam);180

181 for(SaleTim item : list){182 System.out.print(item.getCheck()+" ");183 System.out.print(item.getSale()+" ");184 System.out.println(item.getTime());185 }186 sortParam.clear();187 //check:昇順 time:昇順

188 sortParam.put("check", "desc");189 sortParam.put("time", "asc");190 ListSort.sortExecute(list, sortParam);191 System.out.println("***********check:降順 time:昇順*************");192 for(SaleTim item : list){193 System.out.print(item.getCheck()+" ");194 System.out.print(item.getSale()+" ");195 System.out.println(item.getTime());196 }197 }198 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值