1、按键排序


使用treemap按照键来排序

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

        TreeMap treeMap=new TreeMap(new Comparator() {

            @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 sortMapByValue(Map oriMap) {
        Map sortedMap = new LinkedHashMap();
        if (oriMap != null && !oriMap.isEmpty()) {
            List> entryList = new ArrayList>(oriMap.entrySet());
            Collections.sort(entryList, new Comparator>() {
                @Override
                public int compare(Entry o1, Entry o2) {
                    return o2.getValue() - o1.getValue();
                }
            });
            Iterator> iter = entryList.iterator();
            Map.Entry tmpEntry = null;
            while (iter.hasNext()) {
                tmpEntry = iter.next();
                sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
            }
        }
        return sortedMap;
    }


你可能感兴趣的:(map,排序,Java/C++)