java 中对hashmap进行排序
public class HashMapSort {public static void main(String[] args) {HashMap<Integer, Student> hashMap = new HashMap<Integer,Student>();hashMap.put(100, new Student("姚明",32));hashMap.put(2, new Student("TFboys",13));hashMap.put(30, new Student("刘翔",28));System.out.println("排序前:");System.out.println(""+hashMap.toString());System.out.println("排序后:");HashMap<Integer, Student> result = sort(hashMap);System.out.println(""+ result);}private static HashMap<Integer, Student> sort(HashMap<Integer, Student> hashMap) {//第一步:LinkedHashMap采用的是链表结构,可以实现排序,并且是hashmap的子类//第二步:排序可以采用集合框架中的Collections.sort(list集合,比较器);//该方法可以自定义比较器//第三步:将参数hashmap转化成list集合,这一步是最关键的,hashmap有个成员函数enrtyset,可以将hashmap转化成set集合//set集合和list集合都属于collection的子类,list集合的构造函数可以是collection的子类,我们可以利用set集合构建//list集合达到我们将hashmap转化成list集合的目的//第五步:将排序之后的list集合存储在LinkedHashMap中 LinkedHashMap<Integer, Student> linkedHashMap = new LinkedHashMap<Integer,Student>();Set<Entry<Integer, Student>> entrySet = hashMap.entrySet();ArrayList<Entry<Integer, Student>> arrayList = new ArrayList<>(entrySet);Collections.sort(arrayList,new Comparator<Entry<Integer, Student>>() {@Overridepublic int compare(Entry<Integer, Student> obj1,Entry<Integer, Student> obj2) {// TODO Auto-generated method stubreturn obj1.getValue().getAge() - obj2.getValue().getAge();}});System.out.println(""+arrayList.toString());for(int i = 0 ;i < arrayList.size(); i++){Entry<Integer, Student> entry = arrayList.get(i);linkedHashMap.put(entry.getKey(), entry.getValue());}return linkedHashMap;} }public class Student implements Serializable{/*** */private static final long serialVersionUID = 125252L;private transient String name = "姚明";private int age;public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";} }
上面中最重要的是理解下面的几个思路:
1、 返回值是HashMap,该hashmap具有输出排序的功能,只能想到链接结构可以实现排序,想到hashmap的子类LinkedHashMap。
2、 第二个很关键的是要实现自定义排序,第一想到的肯定是集合框架类的Collections的sort方法,该方法可以实现自定义排序
3、 第三个是Collections只能实现对集合框架类排序,list set属于Collection集合,map属于了另外一个框架
4、 那些要将hashmap转化成list集合才能进行排序,hashmap的成员函数entrySet可以将hashmap转化成set集合,利用set集合可以构造list集合
5、 对list集合进行排序
6、 将排序后的list集合存储在LinkedhashMap中,返回。
上面这个面试题对整个集合框架类启到了一个很好的复习的作用
转载于:https://www.cnblogs.com/kebibuluan/p/7209889.html
java 中对hashmap进行排序相关推荐
- [转]为什么Java中的HashMap默认加载因子是0.75
前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...
- linux hashmap,Java中对HashMap的深度分析与比较
Java中对HashMap的深度分析与比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问 ...
- java中如何对对象排序?
大家好,我是雄雄. 前言: 我们知道,在平时做项目的过程中,我们总会用到各种各样的排序,或是升序,或是降序.在java中,要实现排序有好多中方式,比如我们耳熟能详的冒泡排序.选择排序等,但是我们一般都 ...
- java中的五种排序方法_用Java排序的五种有用方法
java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...
- [转载] java中对数组进行排序_如何在Java中对数组排序
参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...
- java对列表数据排序_如何在Java中对列表进行排序
java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...
- java中对数组进行排序_如何在Java中对数组排序
java中对数组进行排序 Java Array is like a container that can hold a fixed number of the same type of items, ...
- java中hashmap_Java HashMap – Java中的HashMap
java中hashmap Java HashMap is one of the most popular Collection classes in java. Java HashMap is Has ...
- 使用List在Java中的HashMap实现
HashMap is one of the most widely used implementation of Map to store key-value pairs. It was introd ...
最新文章
- 什么是POM maven
- Skia的SkCamera.cpp的doUpdate() 算法。
- java 填充pdf_Java如何创建和填充PDF表单域(代码示例)
- poj 2817 WordStack (状态dp)
- 中国食品检测行业市场发展策略及投资战略建议报告2022-2028年版
- 化工热力学 第二章(流体的 p - V - T 关系)
- android 硬件对接,Android 对接硬件串口篇
- 深圳 | 鹏程实验室研究员招收访问学生
- Python RSA
- LaTeX 页面大小和页边距
- 达梦数据库SQL语句执行
- inpur标签的各种type
- myeclipse登陆问题
- PTA——是不是太胖了
- 宣化科技职业学院计算机哪个校区,宣化科技职业学院宿舍怎么样
- ClickHouse Kafka引擎表 Application maximum poll interval ... leaving group
- gpd计算机等级,GPD 文件扩展名: 它是什么以及如何打开它?
- 这些女强人,颠覆了整个世界
- Linux 日志查看
- 程序猿之华丽转身:必杀之八技
热门文章
- 【软件项目管理】软件项目的主要成本是人的劳动的消耗
- L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
- 车rc陀螺仪测试软件,利用加速度计和陀螺仪测量车辆运动
- flutter git 拉不起来_iOS集成flutter原理及集成打包解决方案
- Linux 环境 简单启动 Java程序
- boost::shared_ptr文档翻译
- 机器学习,看完就明白了
- 2016年物联网行业十大并购事件
- width 、 height 与 box-sizing : border-box ,content-box 的关系
- tomcat下jndi的三种配置方式