map的排序总结

原创 2016年08月28日 14:10:46

1、按键排序


使用treemap按照键来排序

@Test 
    public void treeMap(){
        
        //传入的比较器只能根据key来排序,TreeMap如不指定排序器,默认将按照key值进行升序排序
        //指定排序器按照key值降序排列 ,
        //Comparator中泛型必须传入key类型的的超类TreeMap(Comparator<? super K> comparator) 

        TreeMap<String, Integer> treeMap=new TreeMap<String, Integer>(new Comparator<Object>() {

            @Override
            public int compare(Object o1, Object o2) {
                return o2.hashCode()-(o1.hashCode());
                
                //如果key是String类型   return o2.compareTo(o1);
            }
        }) ;
        treeMap.put("2", 1);  
        treeMap.put("b", 1); 
        treeMap.put("1", 1);  
        treeMap.put("a", 1);  
        System.out.println("treeMap="+treeMap);  
    
    }



 2、按值排序

/**
     * @see map排序
     * @param oriMap
     * @return
     */
    public static Map<String, Integer> sortMapByValue(Map<String, Integer> oriMap) {
        Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
        if (oriMap != null && !oriMap.isEmpty()) {
            List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(oriMap.entrySet());
            Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
                @Override
                public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                    return o2.getValue() - o1.getValue();
                }
            });
            Iterator<Map.Entry<String, Integer>> iter = entryList.iterator();
            Map.Entry<String, Integer> tmpEntry = null;
            while (iter.hasNext()) {
                tmpEntry = iter.next();
                sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
            }
        }
        return sortedMap;
    }


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1763107

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java中Map根据键(Key)或者值(Value)进行排序

我们都知道,java中的Map结构是key-->value键值对存储的,而且根据Map的特性,同一个Map中不存在两个Key相同的元素,而value不存在这个限制。换句话说,在同一个Map中的Key是...

List<LinkedHashMap<String,String>>排序

package com.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comp...

HashMap排序

package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator...

C++ STL中Map的按Key排序和按Value排序

C++ STL中Map的按Key排序和按Value排序, 实用方法小结!
  • IIcyZhao
  • IIcyZhao
  • 2013年09月22日 18:29
  • 43033

java如何对map进行排序详解

一、简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap...

Java Map按键排序和按值排序

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。 按键排序(sort by key) jdk...
  • warhin
  • warhin
  • 2011年12月25日 16:31
  • 76217

C++ STL中Map的按Key排序和按Value排序

map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义...

学会使用map,对map中的元素进行排序

这是codeforces上面的一道A类水题,做这道题目有一个需要总结的地方,或者说我想到了一个很好的办法,题目在这里 题意是说,哪个字符串出现的次数越多,则代表该字符串对应的队获胜。我的想法是利用m...
  • jzwong
  • jzwong
  • 2015年12月04日 15:46
  • 1088

list list 怎么根据一个值对这个List重新排序

---------给--力--的--分--割--线------------------- 正文: 这是两个list得出来得结果集用得sql "select do.id, c.startTime ,...
  • zgf1991
  • zgf1991
  • 2012年09月06日 18:44
  • 4860

Java反射获取get和set方法

反射bean的get方法 /** * java反射bean的get方法 * * @param objectClass * @param fieldName ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:map的排序总结
举报原因:
原因补充:

(最多只允许输入30个字)