已知一个HashMap<Integer, User>集合,User有name和age属性,请写一个方法实现对HashMap的排序功能,该方法接收HashMap<Integer, User>为形参,返回类型为HashMap<Integer, User>,要求对HashMap中的User的age倒序排序,排序时key=value键值对不能拆散。
解析:HashMap本身是不可排序的,但是这道题偏偏让给HashMap排序,那我们就得想在API中有没有这样的Map结构是有序的,LinkedHashMap既是Map结构,也是链表结构,有序的,它也是HashMap的子类,所以我们返回LinkedHashMap<Integer, User>即可,这也符合面向接口(父类编程的思想)。
但凡对集合的操作,我们应保持一个原则就是能用JDK中的API就用JDK中的API,比如排序算法我们不应该去用冒泡或者选择排序,而是首先想到Collections集合工具类。

代码如下:

import java.util.*;public class Demo{public static void main(String[] args) {HashMap<Integer, User> hashMap = new HashMap<>();hashMap.put(1, new User("张三", 28));hashMap.put(2, new User("李四", 23));hashMap.put(3, new User("王五", 26));hashMap.put(4, new User("赵六", 21));hashMap.put(5, new User("田七", 29));hashMap.put(6, new User("钱八", 24));HashMap<Integer, User> sortMap = sort(hashMap);System.out.println(sortMap);}public static HashMap<Integer, User> sort(HashMap<Integer, User> hashMap) {//首先获取HashMap的键值对集合Set<Map.Entry<Integer, User>> entrySet = hashMap.entrySet();//将set集合转换为list集合,方便使用Collections类排序List<Map.Entry<Integer, User>> list = new ArrayList<>(entrySet);//使用Collections集合工具类对list进行排序Collections.sort(list, (o1, o2) -> {//按年龄降序return o2.getValue().getAge() - o1.getValue().getAge();});//创建一个有序的HashMap子类集合LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<>();//将list集合中的数据存入linkedHashMapfor (Map.Entry<Integer, User> entry : list) {linkedHashMap.put(entry.getKey(), entry.getValue());}return linkedHashMap;}
}

HashMap排序题相关推荐

  1. Android的HashMap方法,Android中实现HashMap排序的方法

    HashMap排序是数据结构与算法中常见的一种排序算法.本文即以Android平台为例来实现该算法. 具体代码如下: public static void main(String[] args) { ...

  2. 排序题和sort函数应用

    1.相关结构体的定义 对排序题,一定会在题目中给出个体的许多信息,例如学生有姓名.准考证号.分数.排名等信息.这些信息在排序过程中一般都会用到,因此为了方便编写代码,常常将它们存至一个结构体当中,然后 ...

  3. Java HashMap 排序

    Java HashMap 排序 HashMap是无序集合,但会有对HashMap排序的需求,下面整理了一种方法. 转为list集合 重写比较器 1. 键值对全部转入list //键值对全部转入list ...

  4. 给HashMap排序的方法

    给HashMap排序的方法 1.给key排序 将HashMap转化为TreeMap,treemap是一个b+树,排序有很好的性能,升序还是降序需要重写compareble方法. 2.给value排序 ...

  5. 问卷:问卷星文本导出数据的多选题,排序题的处理拆分

    问卷星问卷如果选择的是文本导出而非序号导出,多选题和排序题会用 | 分割符号隔开各个选项 以后应该不会用文本导出的数据了,用序号数据 首先要找出要处理的选择题的选项有哪些 然后判断选项是否出现 mul ...

  6. Java8 lambda HashMap排序

    hashMap排序-倒叙 List<Map.Entry<String, Integer>> collect = hashMap.entrySet().stream() .sor ...

  7. c语言5个人3课成绩,一道c语言排序题【问题描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高...

    一道c语言排序题 [问题描述] 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分 ...

  8. 问卷排序题应该怎样分析?

    在一般的问卷调研中,除了常见的单选题.多选题,还有一类题型受到问卷设计者的偏爱. 这就是排序题,排序题不仅可以直观展现答题者对每个选项的态度,还能按照应答频次与重要程度对选项进行排名. 但设计问卷一时 ...

  9. 【SPSS03】排序题分析

    排序题分析 排序题背景说明 数据说明 & 分析目的 使用分析方法的原因阐述 Friedman检验 检验结果 排序题背景说明 数据说明 & 分析目的 如图,数据为7个运动员获得4个裁判的 ...

  10. 用java实现职工排序题

    职工排序题 1. 为某保险公司设计一个职工管理系统,其中职工类的属性有:职工编号,姓名,性别,团体险业绩,个体险业绩:方法有: 每个属性对应的set,get方法: 不带参数的构造方法: 带参数的构造方 ...

最新文章

  1. 做百度推广需要投入多少费用?
  2. FMS应用实例 - 从FMS服务器读取文件(图片/SWF/文本)到客户端
  3. pandas 补充知识:data_range函数
  4. UML--核心元素之包
  5. java中CyclicBarrier的使用
  6. 服务器系统的功能,服务器操作系统有什么功能
  7. JSONArray.fromObject(str)
  8. 下载网页 TS视频并自动合成视频
  9. 织梦采集侠推荐免登陆免规则伪原创发布配置
  10. lisp 设计盘形齿轮铣刀_用AutoLISP设计盘形齿轮铣刀渐开线齿形
  11. php 转换带声调的字幕,PHP 汉字、拼音、unicode、声母、韵母互相转换
  12. C# WPF MVVM 实战 – 2.4 单元测试
  13. dell设置从ssd启动_戴尔dell笔记本bios怎么设置第一启动项为硬盘
  14. toString转化成json
  15. MultipartFile上传/下载图片
  16. anaconda下载python的库_Anaconda下载及安装及查看安装的Python库用法
  17. 什么是适配器模式?适配器模式的优点和缺点?
  18. 3.5 杭电研究生复试2008
  19. 河南分销系统开发|服装行业如何做引流裂变?
  20. vector删除指定元素

热门文章

  1. Arduino IDE 烧录 ESP8266教程
  2. linux恢复树莓派内存卡容量,找回树莓派SD卡剩余空间
  3. 基于JSP实现的作业管理系统
  4. 使用Adobephotoshop制作LOGO
  5. 打开小米随身wifi的无线网卡功能
  6. Unity3D插件Gaia的基本使用方法
  7. 图像原始格式 YUV444 YUV422 YUV420 详细解析
  8. 隆重推荐:公民税权手册
  9. 数据库防火墙数据库加密与脱敏数据泄露防护
  10. 实现Modbus Rtu 服务端 通过RS485转4G方式 实现远程采集传输串口设备数据