`
jslfl
  • 浏览: 321153 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

List<Map> 自定义排序

阅读更多
对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)
.
0
1
分享到:
评论

相关推荐

    java使用stream对日期排序

    如果需要自定义排序规则,可以创建一个`Comparator&lt;LocalDate&gt;`实例。 4. 自定义日期排序: 如果需要按照特定规则(例如,先按月份排序,再按日期排序)排序,可以这样实现: ```java List&lt;LocalDate&gt; ...

    JAVA8 List&lt;List&lt;Integer&gt;&gt; list中再装一个list转成一个list操作

    List&lt;List&lt;Integer&gt;&gt; lists = new ArrayList&lt;&gt;(); lists.add(IntStream.range(1, 10).boxed().collect(Collectors.toList())); lists.add(IntStream.range(10, 20).boxed().collect(Collectors.toList())); ``` 这里...

    Java JDK实例宝典

    8 对List排序 &lt;br&gt;4. 9 HashSet. LinkedHashSet和TreeSet &lt;br&gt;4. 10 列表. 集合与数组的互相转换 &lt;br&gt;4. 11 HashMap. Hashtable. LinkedHashMap和TreeMap &lt;br&gt;4. 12 对Map排序 &lt;br&gt;4. 13 Properties属性文件 &lt;br&gt;第...

    Visual C++ 编程资源大全(英文源码 表单)

    69.zip&lt;br&gt;Smart Pointers and other Pointer classes&lt;br&gt;指针类(5KB)&lt;END&gt;&lt;br&gt;70,70.zip&lt;br&gt;Sortable CObArray class&lt;br&gt;对CObArray类排序(5KB)&lt;END&gt;&lt;br&gt;71,71.zip&lt;br&gt;Sortable CObList class&lt;br&gt;对CObList类排序(6...

    hibernate 教程

    对结果排序&lt;br&gt;12.4. 关联(Associations)&lt;br&gt;12.5. 动态关联对象获取(Dynamic association fetching)&lt;br&gt;12.6. 根据示例查询(Example queries)&lt;br&gt;13. 原生SQL查询&lt;br&gt;13.1. 创建一个基于SQL的Query&lt;br&gt;13.2....

    hibernate

    对结果排序&lt;br&gt;12.4. 关联(Associations)&lt;br&gt;12.5. 动态关联对象获取(Dynamic association fetching)&lt;br&gt;12.6. 根据示例查询(Example queries)&lt;br&gt;13. 原生SQL查询&lt;br&gt;13.1. 创建一个基于SQL的Query&lt;br&gt;13.2....

    collections方法集合

    List&lt;String&gt; flavors = new ArrayList&lt;&gt;(); Collections.addAll(flavors, "Peaches'nPlutonium", "RockyRacoon"); ``` 此例中,`flavors`列表将被填充上指定的字符串元素。 #### 2. `asLifoQueue` 此方法将`...

    Java 对象属性map排序示例

    List&lt;Map.Entry&lt;String, String&gt;&gt; entryList = new ArrayList&lt;&gt;(unsortedMap.entrySet()); Collections.sort(entryList, new Comparator&lt;Map.Entry&lt;String, String&gt;&gt;() { @Override public int compare(Map.Entry...

    C++ 头文件大全

    - `&lt;algorithm&gt;`:包含各种算法,如排序和查找。 - `&lt;iterator&gt;`:提供迭代器相关的工具。 2. **C++ Standard Template Library (STL) 头文件**: - `&lt;array&gt;`:固定大小的数组容器。 - `&lt;list&gt;`:双向链表容器...

    pageHelper的使用

    PageHelper还支持动态SQL优化、自定义排序、多表联合查询分页等功能,可以根据项目需求灵活使用。 总之,PageHelper作为MyBatis的优秀分页插件,通过简洁的API和多种使用方式,极大地提高了开发效率,降低了代码的...

    STL自定义排序准则

    STL自定义排序准则 STL(Standard Template Library)是C++编程中非常重要的一...STL的排序准则是非常重要的概念,通过使用operator&lt;运算符和自定义排序准则,我们可以实现复杂的排序规则,提高编程的效率和灵活性。

    Java Map 按值排序

    List&lt;Map.Entry&lt;String, Integer&gt;&gt; list = new ArrayList&lt;&gt;(map.entrySet()); Collections.sort(list, new Comparator&lt;Map.Entry&lt;String, Integer&gt;&gt;() { @Override public int compare(Map.Entry&lt;String, Integer&gt;...

    常见的C++6.0标准头文件及对应说明.pdf

    14. `&lt;vector&gt;`, `&lt;list&gt;`, `&lt;deque&gt;`, `&lt;queue&gt;`, `&lt;stack&gt;`, `&lt;map&gt;`, `&lt;set&gt;`, `&lt;bitset&gt;`:这些头文件定义了C++标准库的容器类,如动态数组`vector`, 双向链表`list`, 双端队列`deque`, 队列`queue`, 栈`stack`,...

    Java8 用Lambda表达式给List集合排序的实现

    通过实现Comparator&lt;T&gt;接口,可以自定义比较规则,实现List集合的排序。 使用Lambda表达式实现List集合排序 在示例代码中,我们首先定义了一个Apple类,用于表示苹果对象。然后,通过实现Comparator&lt;T&gt;接口,定义...

    C++中使用sort对常见容器排序.docx

    // 自定义排序 auto cmp = [](int a, int b) { return a &lt; b; }; std::sort(vec.begin(), vec.end(), cmp); for (int v : vec) std::cout &lt;&lt; v &lt;&lt; " "; std::cout &lt;&lt; std::endl; } ``` #### 3. 使用 sort 对 ...

    SpringCollectionExample

    &lt;property name="listProperty"&gt; &lt;list&gt; &lt;value&gt;Value1&lt;/value&gt; &lt;value&gt;Value2&lt;/value&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; ``` 接着,我们来看`Set`接口。`Set`不允许有重复元素,Spring支持`HashSet`和`TreeSet`...

    c++和c的头文件大全

    4. `&lt;deque&gt;`、`&lt;list&gt;`、`&lt;map&gt;`、`&lt;set&gt;`、`&lt;queue&gt;`、`&lt;stack&gt;` 和 `&lt;vector&gt;`:这些是STL(Standard Template Library)容器,分别表示双端队列、线性列表、映射、集合、队列、堆栈和动态数组。 5. `&lt;exception...

    常见的C++6.0标准头文件及对应说明.docx

    4. `&lt;list&gt;`:定义了`std::list`模板类,它是一个双向链表容器,适合频繁插入和删除元素的操作。 5. `&lt;map&gt;`和`&lt;unordered_map&gt;`:分别提供有序和无序的键值对映射容器,`std::map`基于红黑树实现,`std::unordered...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    本次我们关注的是Java集合框架中的三类接口:List、Set和Map,以及如何实现它们的特定功能,特别是关于`TreeSet`和`TreeMap`的按值排序。标题中提到的“JCF(List、Set、Map)学习,实现了&lt;key,value&gt;按value排序”是...

    java map 集合 排序

    List&lt;Map.Entry&lt;String, Integer&gt;&gt; list = new ArrayList&lt;&gt;(hashMap.entrySet()); Collections.sort(list, new Comparator&lt;Map.Entry&lt;String, Integer&gt;&gt;() { @Override public int compare(Map.Entry&lt;String, ...

Global site tag (gtag.js) - Google Analytics