对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)
.
分享到:
相关推荐
如果需要自定义排序规则,可以创建一个`Comparator<LocalDate>`实例。 4. 自定义日期排序: 如果需要按照特定规则(例如,先按月份排序,再按日期排序)排序,可以这样实现: ```java List<LocalDate> ...
List<List<Integer>> lists = new ArrayList<>(); lists.add(IntStream.range(1, 10).boxed().collect(Collectors.toList())); lists.add(IntStream.range(10, 20).boxed().collect(Collectors.toList())); ``` 这里...
8 对List排序 <br>4. 9 HashSet. LinkedHashSet和TreeSet <br>4. 10 列表. 集合与数组的互相转换 <br>4. 11 HashMap. Hashtable. LinkedHashMap和TreeMap <br>4. 12 对Map排序 <br>4. 13 Properties属性文件 <br>第...
69.zip<br>Smart Pointers and other Pointer classes<br>指针类(5KB)<END><br>70,70.zip<br>Sortable CObArray class<br>对CObArray类排序(5KB)<END><br>71,71.zip<br>Sortable CObList class<br>对CObList类排序(6...
对结果排序<br>12.4. 关联(Associations)<br>12.5. 动态关联对象获取(Dynamic association fetching)<br>12.6. 根据示例查询(Example queries)<br>13. 原生SQL查询<br>13.1. 创建一个基于SQL的Query<br>13.2....
对结果排序<br>12.4. 关联(Associations)<br>12.5. 动态关联对象获取(Dynamic association fetching)<br>12.6. 根据示例查询(Example queries)<br>13. 原生SQL查询<br>13.1. 创建一个基于SQL的Query<br>13.2....
List<String> flavors = new ArrayList<>(); Collections.addAll(flavors, "Peaches'nPlutonium", "RockyRacoon"); ``` 此例中,`flavors`列表将被填充上指定的字符串元素。 #### 2. `asLifoQueue` 此方法将`...
List<Map.Entry<String, String>> entryList = new ArrayList<>(unsortedMap.entrySet()); Collections.sort(entryList, new Comparator<Map.Entry<String, String>>() { @Override public int compare(Map.Entry...
- `<algorithm>`:包含各种算法,如排序和查找。 - `<iterator>`:提供迭代器相关的工具。 2. **C++ Standard Template Library (STL) 头文件**: - `<array>`:固定大小的数组容器。 - `<list>`:双向链表容器...
PageHelper还支持动态SQL优化、自定义排序、多表联合查询分页等功能,可以根据项目需求灵活使用。 总之,PageHelper作为MyBatis的优秀分页插件,通过简洁的API和多种使用方式,极大地提高了开发效率,降低了代码的...
STL自定义排序准则 STL(Standard Template Library)是C++编程中非常重要的一...STL的排序准则是非常重要的概念,通过使用operator<运算符和自定义排序准则,我们可以实现复杂的排序规则,提高编程的效率和灵活性。
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer>...
14. `<vector>`, `<list>`, `<deque>`, `<queue>`, `<stack>`, `<map>`, `<set>`, `<bitset>`:这些头文件定义了C++标准库的容器类,如动态数组`vector`, 双向链表`list`, 双端队列`deque`, 队列`queue`, 栈`stack`,...
通过实现Comparator<T>接口,可以自定义比较规则,实现List集合的排序。 使用Lambda表达式实现List集合排序 在示例代码中,我们首先定义了一个Apple类,用于表示苹果对象。然后,通过实现Comparator<T>接口,定义...
// 自定义排序 auto cmp = [](int a, int b) { return a < b; }; std::sort(vec.begin(), vec.end(), cmp); for (int v : vec) std::cout << v << " "; std::cout << std::endl; } ``` #### 3. 使用 sort 对 ...
<property name="listProperty"> <list> <value>Value1</value> <value>Value2</value> </list> </property> </bean> ``` 接着,我们来看`Set`接口。`Set`不允许有重复元素,Spring支持`HashSet`和`TreeSet`...
4. `<deque>`、`<list>`、`<map>`、`<set>`、`<queue>`、`<stack>` 和 `<vector>`:这些是STL(Standard Template Library)容器,分别表示双端队列、线性列表、映射、集合、队列、堆栈和动态数组。 5. `<exception...
4. `<list>`:定义了`std::list`模板类,它是一个双向链表容器,适合频繁插入和删除元素的操作。 5. `<map>`和`<unordered_map>`:分别提供有序和无序的键值对映射容器,`std::map`基于红黑树实现,`std::unordered...
本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了<key,value>按value排序”是...
List<Map.Entry<String, Integer>> list = new ArrayList<>(hashMap.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, ...