HashMap排序题
已知一个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排序题相关推荐
- Android的HashMap方法,Android中实现HashMap排序的方法
HashMap排序是数据结构与算法中常见的一种排序算法.本文即以Android平台为例来实现该算法. 具体代码如下: public static void main(String[] args) { ...
- 排序题和sort函数应用
1.相关结构体的定义 对排序题,一定会在题目中给出个体的许多信息,例如学生有姓名.准考证号.分数.排名等信息.这些信息在排序过程中一般都会用到,因此为了方便编写代码,常常将它们存至一个结构体当中,然后 ...
- Java HashMap 排序
Java HashMap 排序 HashMap是无序集合,但会有对HashMap排序的需求,下面整理了一种方法. 转为list集合 重写比较器 1. 键值对全部转入list //键值对全部转入list ...
- 给HashMap排序的方法
给HashMap排序的方法 1.给key排序 将HashMap转化为TreeMap,treemap是一个b+树,排序有很好的性能,升序还是降序需要重写compareble方法. 2.给value排序 ...
- 问卷:问卷星文本导出数据的多选题,排序题的处理拆分
问卷星问卷如果选择的是文本导出而非序号导出,多选题和排序题会用 | 分割符号隔开各个选项 以后应该不会用文本导出的数据了,用序号数据 首先要找出要处理的选择题的选项有哪些 然后判断选项是否出现 mul ...
- Java8 lambda HashMap排序
hashMap排序-倒叙 List<Map.Entry<String, Integer>> collect = hashMap.entrySet().stream() .sor ...
- c语言5个人3课成绩,一道c语言排序题【问题描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高...
一道c语言排序题 [问题描述] 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分 ...
- 问卷排序题应该怎样分析?
在一般的问卷调研中,除了常见的单选题.多选题,还有一类题型受到问卷设计者的偏爱. 这就是排序题,排序题不仅可以直观展现答题者对每个选项的态度,还能按照应答频次与重要程度对选项进行排名. 但设计问卷一时 ...
- 【SPSS03】排序题分析
排序题分析 排序题背景说明 数据说明 & 分析目的 使用分析方法的原因阐述 Friedman检验 检验结果 排序题背景说明 数据说明 & 分析目的 如图,数据为7个运动员获得4个裁判的 ...
- 用java实现职工排序题
职工排序题 1. 为某保险公司设计一个职工管理系统,其中职工类的属性有:职工编号,姓名,性别,团体险业绩,个体险业绩:方法有: 每个属性对应的set,get方法: 不带参数的构造方法: 带参数的构造方 ...
最新文章
- 做百度推广需要投入多少费用?
- FMS应用实例 - 从FMS服务器读取文件(图片/SWF/文本)到客户端
- pandas 补充知识:data_range函数
- UML--核心元素之包
- java中CyclicBarrier的使用
- 服务器系统的功能,服务器操作系统有什么功能
- JSONArray.fromObject(str)
- 下载网页 TS视频并自动合成视频
- 织梦采集侠推荐免登陆免规则伪原创发布配置
- lisp 设计盘形齿轮铣刀_用AutoLISP设计盘形齿轮铣刀渐开线齿形
- php 转换带声调的字幕,PHP 汉字、拼音、unicode、声母、韵母互相转换
- C# WPF MVVM 实战 – 2.4 单元测试
- dell设置从ssd启动_戴尔dell笔记本bios怎么设置第一启动项为硬盘
- toString转化成json
- MultipartFile上传/下载图片
- anaconda下载python的库_Anaconda下载及安装及查看安装的Python库用法
- 什么是适配器模式?适配器模式的优点和缺点?
- 3.5 杭电研究生复试2008
- 河南分销系统开发|服装行业如何做引流裂变?
- vector删除指定元素