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进行排序相关推荐

  1. [转]为什么Java中的HashMap默认加载因子是0.75

    前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...

  2. linux hashmap,Java中对HashMap的深度分析与比较

    Java中对HashMap的深度分析与比较 在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键.由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问 ...

  3. java中如何对对象排序?

    大家好,我是雄雄. 前言: 我们知道,在平时做项目的过程中,我们总会用到各种各样的排序,或是升序,或是降序.在java中,要实现排序有好多中方式,比如我们耳熟能详的冒泡排序.选择排序等,但是我们一般都 ...

  4. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  5. [转载] java中对数组进行排序_如何在Java中对数组排序

    参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...

  6. java对列表数据排序_如何在Java中对列表进行排序

    java对列表数据排序 Sometimes we have to sort a list in Java before processing its elements. In this tutoria ...

  7. java中对数组进行排序_如何在Java中对数组排序

    java中对数组进行排序 Java Array is like a container that can hold a fixed number of the same type of items, ...

  8. java中hashmap_Java HashMap – Java中的HashMap

    java中hashmap Java HashMap is one of the most popular Collection classes in java. Java HashMap is Has ...

  9. 使用List在Java中的HashMap实现

    HashMap is one of the most widely used implementation of Map to store key-value pairs. It was introd ...

最新文章

  1. 什么是POM maven
  2. Skia的SkCamera.cpp的doUpdate() 算法。
  3. java 填充pdf_Java如何创建和填充PDF表单域(代码示例)
  4. poj 2817 WordStack (状态dp)
  5. 中国食品检测行业市场发展策略及投资战略建议报告2022-2028年版
  6. 化工热力学 第二章(流体的 p - V - T 关系)
  7. android 硬件对接,Android 对接硬件串口篇
  8. 深圳 | 鹏程实验室研究员招收访问学生
  9. Python RSA
  10. LaTeX 页面大小和页边距
  11. 达梦数据库SQL语句执行
  12. inpur标签的各种type
  13. myeclipse登陆问题
  14. PTA——是不是太胖了
  15. 宣化科技职业学院计算机哪个校区,宣化科技职业学院宿舍怎么样
  16. ClickHouse Kafka引擎表 Application maximum poll interval ... leaving group
  17. gpd计算机等级,GPD 文件扩展名: 它是什么以及如何打开它?
  18. 这些女强人,颠覆了整个世界
  19. Linux 日志查看
  20. 程序猿之华丽转身:必杀之八技

热门文章

  1. 【软件项目管理】软件项目的主要成本是人的劳动的消耗
  2. L2-002. 链表去重-PAT团体程序设计天梯赛GPLT
  3. 车rc陀螺仪测试软件,利用加速度计和陀螺仪测量车辆运动
  4. flutter git 拉不起来_iOS集成flutter原理及集成打包解决方案
  5. Linux 环境 简单启动 Java程序
  6. boost::shared_ptr文档翻译
  7. 机器学习,看完就明白了
  8. 2016年物联网行业十大并购事件
  9. width 、 height 与 box-sizing : border-box ,content-box 的关系
  10. tomcat下jndi的三种配置方式