对map的值按照由高到低排序

/**
     * 按map中的值由高到低排序
     * @param map
     */
    private Map<String,Integer>  sortMapByValue(Map<String,Integer> map){
        Set<Entry<String, Integer>> entrySet = map.entrySet();
        List<Map.Entry<String, Integer>> entrySetList = new ArrayList<Map.Entry<String, Integer>>(entrySet);
        Collections.sort(entrySetList, new MapValueComparator());
        Map<String, Integer> resultMap = new LinkedHashMap<String,Integer>();
        for(Map.Entry<String, Integer> entry : entrySetList){
            resultMap.put(entry.getKey(), entry.getValue());
        }
        return resultMap;
    }

    private class MapValueComparator implements Comparator<Map.Entry<String,Integer>>{
        @Override
        public int compare(Entry<String, Integer> entry0,    Entry<String, Integer> entry1) {
            Integer v0 = entry0.getValue();
            Integer v1 = entry1.getValue();
            return v1.compareTo(v0);
        }
    }

 Map<String,Integer> map  =new  HashMap<String,Integer>();
  map.put("aaa", 1000);
  map.put("bbb", 500);
  map.put("ccc", 2000);
  map.put("ddd", 800);
  map.put("eee", 1500);
 Map<String,Integer> map1= new Test().sortMapByValue(map);
 System.out.println(map1);
int N=3;

    Object[] hobbyFlagKeys = map1.keySet().toArray();
    N = Math.min(N, hobbyFlagKeys.length);
    for(int i=0; i<N; i++){
        final String hobbyFlagKey = (String) hobbyFlagKeys[i];
        final Integer count = map1.get(hobbyFlagKey);
        System.out.println(hobbyFlagKey+":::"+count);
    }
        
时间: 2024-10-29 11:02:40

对map的值按照由高到低排序的相关文章

输入10个人分数,求最高分,按分数从高到低排序&amp;&amp;去除最高分最低分,求平均分

1.输入10个人分数,求最高分,按分数从高到低排序 int[] arr = new int[10]; for (int i = 0; i < 10; i++)//arr.length=n { Console.Write("请输入第" + (i + 1) + "个人的分数:"); arr[i] = int.Parse(Console.ReadLine()); } for (int i = 0; i < 10; i++)//数组按索引一步步走,每走一步,就拿

写程序完成输入学生学号,姓名,以及成绩信息,并由高到低排序

要求:写程序完成输入学生学号,姓名,以及成绩信息,根据学生成绩由高到低排序. #include <stdio.h>#include <string.h>typedef struct student_score{ int id; char name[20]; int score; }STU;  //定义结构体 int main(int argc, const char *argv[]){ int i,j; int num; STU tmp,stu[100]; printf("

结构体 输入学号 姓名 身高 按身高从高到低排序

键盘录入5个学生的信息根据总分从高到低输出在控制台

第一部分: public class Student { private String name; private Integer chinese; private Integer math; private Integer english; public Student(){ super(); } public Student(String name,Integer chinese,Integer math,Integer english){ super(); this.name = name

Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台

1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台: 分析: A: 定义学生类    B: 创建一个TreeSet集合       C: 总分从高到底如何实现呢?        D: 键盘录入5个学生信息       E: 遍历TreeSet集合 2. 代码示例: (1)Student.java: 1 package cn.itcast_08; 2 3 public class Student { 4 // 姓名 5 private String na

键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

1.先写一个Student类 public class Student { private String name; private int chinese; private int math; private int english; public Student() { super(); } public Student(String name, int chinese, int math, int english) { this.name = name; this.chinese = ch

【JSP EL】EL表达式 获取list长度/不用循环,EL在List中直接获取第一项的内容/EL获取Map的键,Map的值

1.EL表达式 获取list长度 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <c:if test="${fn:length(list名字)>1}"&g

用字典给Model赋值并支持map键值替换

这个是昨天教程的升级版本,支持键值的map替换. 源码如下: NSObject+Properties.h 与 NSObject+Properties.m // // NSObject+Properties.h // // Created by YouXianMing on 14-9-4. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> @interface

Map 键值对

Map 键值对 * a:添加功能 V put(K key,V value):添加元素. * 如果键是第一次存储,就直接存储元素,返回null * 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值 * b:删除功能 * void clear():移除所有的键值对元素 * V remove(Object key):根据键删除键值对元素,并把值返回 * c:判断功能 * boolean containsKey(Object key):判断集合是否包含指定的键 * boolean contai