这篇文章主要介绍了Java HashMap两种简便排序方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

HashMap的储存是没有顺序的,而是按照key的HashCode实现.

key=手机品牌,value=价格,这里以这个例子实现按名称排序和按价格排序.

Map phone=new HashMap();

phone.put("Apple",8899);

phone.put("SAMSUNG",7000);

phone.put("Meizu",2698);

phone.put("Xiaomi",1800);

System.out.println(phone);

直接输出HashMap得到的是一个无序Map(不是Arraylist那种顺序型储存)

1. 按key排序

对名称进行排序,首先要得到HashMap中键的集合(keySet),并转换为数组,这样才能用Arrays.sort()进行排序

Set set=phone.keySet();

Object[] arr=set.toArray();

Arrays.sort(arr);

for(Object key:arr){

System.out.println(key);

}

得到排序好的键值

最后利用HashMap.get(key)得到键对应的值即可

for(Object key:arr){

System.out.println(key+": "+phone.get(key));

}

得到的打印的结果

2.按value排序

对价格进行排序,首先需要得到HashMap中的包含映射关系的视图(entrySet),

如图:

将entrySet转换为List,然后重写比较器比较即可.这里可以使用List.sort(comparator),也可以使用Collections.sort(list,comparator)

转换为list

List> list = new ArrayList>(phone.entrySet()); //转换为list

使用list.sort()排序

list.sort(new Comparator>() {

@Override

public int compare(Map.Entry o1, Map.Entry o2) {

return o2.getValue().compareTo(o1.getValue());

}

});

使用Collections.sort()排序

Collections.sort(list, new Comparator>() {

@Override

public int compare(Map.Entry o1, Map.Entry o2) {

return o2.getValue().compareTo(o1.getValue());

}

});

两种方式结果输出

//for循环

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i).getKey() + ": " + list.get(i).getValue());

}

//for-each循环

for (Map.Entry mapping : list){

System.out.println(mapping.getKey()+": "+mapping.getValue());

}

遍历打印输出

//for

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i).getKey() + ": " +list.get(i).getValue());

}

System.out.println();

//for-each

for (Map.Entry mapping : list) {

System.out.println(mapping.getKey() + ": " +mapping.getValue());

}

结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java的hashmap排序_Java HashMap两种简便排序方法解析相关推荐

  1. java 多线程间通讯_JAVA多线程间通讯常用实现方法解析

    如何实现线程间通讯,有如下三种方法: 1.使用Semaphore (信号量)类来控制线程的等待和释放 功能:三个线程 a .b .c 并发运行,b,c 需要 a 线程的数据怎么实现 分析:考虑到多线程 ...

  2. java 鸡尾酒排序_Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...

  3. java 两个list排序_java实现两个不同list对象合并后并排序

    工作上遇到一个要求两个不同list对象合并后并排序 1.问题描述 从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序. 2.思路 从数据库中查询到的数据放到各自list中, ...

  4. Java生成二维码的两种方法

    本文介绍Java生成二维码的两种方法,这两种方法都依赖于google提供的二维码依赖包. 一种是自己写工具类,代码可以网上抄. 另一种是使用hutool第三方工具类的依赖包,不用自己抄代码. 一.自定 ...

  5. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  6. java项目打jar包的两种情况

    java项目打jar包的两种情况 本文介绍一下java项目打jar包时的两种情况各怎么操作 方法/步骤 1.  1 一.java项目没有导入第三方jar包 这时候打包就比较简单: 1.  首先在Ecl ...

  7. Java中线程的创建有两种方式

    Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过 ...

  8. 【转载】面向对象建模与数据库建模两种分析设计方法的比较

    [转载]面向对象建模与数据库建模两种分析设计方法的比较 板桥里人 http://www.jdon.com 2007/9/23(转载请保留) 我们知道:一个软件从无到有需要经过如下几个阶段:分析.设计. ...

  9. matlab 遍历每个像素点,Mat中两种像素遍历方法比较

    小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...

  10. Hbase表两种数据备份方法-导入和导出示例

    Hbase表两种数据备份方法-导入和导出示例 本文将提供两种备份方法 -- 1) 基于Hbase提供的类对hbase中某张表进行备份 2) 基于Hbase snapshot数据快速备份方法 场合:由于 ...

最新文章

  1. 我从500个技术号,选出这10个厉害的推荐给你!
  2. 假如我是超级卷王......
  3. 不允许 ASSIGNMENT 语句中包含 FOR XML 子句。
  4. 014_insert into select语句
  5. C++检查给定数字是否为4的幂的算法实现(附完整源码)
  6. 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
  7. bootstrap——强大的网页设计元素模板
  8. java file 其他电脑上_将MultipartFile转换为java.io.File而不复制到本地计算机
  9. javascript中一个字符占几个字节
  10. 1160. 不容易系列之二
  11. winsxs是什么文件夹 Winsxs文件夹可以删除吗
  12. 隔行插入行——《超级处理器》应用
  13. Linux: fPIC与 pie 区别
  14. sha算法 哈希算法_SHA1哈希算法教程及其用法示例
  15. C语言中的void和void*的定义及用法
  16. MT7628开发环境搭建
  17. mac java调用浏览器_mac osx 下 浏览器 开启 java
  18. html隐藏m3u8文件,播放具有HTML视频标签的m3u8文件
  19. delphi 多线程
  20. 计算机毕业设计Node.js+Vue二手图书回收销售网站(程序+源码+LW+部署)

热门文章

  1. 服务器系统用哪个版本好,windows服务器系统哪个版本好用
  2. 社区列表根据关注人数排序(排行榜)的实现思路整理
  3. java大小写同时转换(大写的转为小写,小写转为大写)
  4. 毛星云opencv第二章总结
  5. 冰点下载器手机版apk_冰点下载器官网
  6. 文献笔记(4)(2018ISSCC 13.3)
  7. android 断点下载的实现,自己动手实现一个Android断点下载
  8. 三次B样条拟合及一阶导、二阶导、曲率计算
  9. 谷粒商城-个人笔记(基础篇一)
  10. Python 量化投资实战教程(5) — A股回测KDJ 策略