|
|
对list根据自定义方法排序记要
List list = dao.findAllToMap();//得到所有数据,结果封装成List<Map>ComparatorArea comparator = new ComparatorArea();Collections.sort(list, comparator); /** * 对区块自定义排序,顺序从高到低如下: *塔北 * 库车 *塔中 *塔西 *塔河 *盛业 *新疆 * */ private class ComparatorArea implements Comparator{ Map<String,Integer> sortValue = new HashMap<String,Integer>(); public ComparatorArea(){ initSort(); }public int compare(Object p1, Object p2) {Object o1 = ((Map)p1).get("ITEM_AREA_NAME");Object o2 = ((Map)p2).get("ITEM_AREA_NAME");String key1 = o1 != null ? o1.toString() : "";String key2 = o2 != null ? o2.toString() : "";if(StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){return 0;//都为null或空串,相等}else if(key1.equals(key2)){return 0;}else if(StringUtils.isEmpty(key1) && !StringUtils.isEmpty(key2)){return 1;//null或空串越向后靠}else if(!StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){return -1;//null或空串越向后靠}else if(sortValue.get(key1) > sortValue.get(key2)){return 1;}else{return -1;}} //排序顺序,value越大,排序越靠前private void initSort(){sortValue.put("新疆", 7);sortValue.put("盛业", 6);sortValue.put("塔河", 5);sortValue.put("塔西", 4);sortValue.put("塔中", 3);sortValue.put("库车", 2);sortValue.put("塔北", 1);} }
如果排序对象是个实体类,实体类则直接实现Comparator接口,实现compare方法即可;实现Comparator接口时,可以使用泛型,如implements Comparator<User>;compare(User p1, User p2)
. |
|