一、按key值排序

假设HashMap存储的键-值对为(String,Integer),按key排序可以调用JDK函数sort(默认的按字典升序):

Set keySet = map.keySet();

Collections.sort(keySet);

for(Iterator ite = keySet.iterator(); ite.hasNext();) {

String temp = ite.next();

System.out.println("key-value: "+temp+","+map.getValue(temp);

}

如果想要按字典的降序排列,则需改写sort方法里面的比较器Comparator:

Collections.sort(keySet, new Comparator() {

public int compare(Object o1, Object o2) {

if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString())

return 1;

if(Integer.parseInt(o1.toString())==Integer.parseInt(o2.toString())

return 0;

else

return -1;

}

});

二、按value值排序

1)方法一:用两个list链表实现

List keyList = new LinkedList();

keyList.addAll(map.keySet());

List valueList = new LinkedList();

valueList.addAll(map.values());

for(int i=0; i

for(int j=i+1; j

if(valueList.get(j)>valueList.get(i)) {

valueList.set(j, valueList.get(i));

valueList.set(i, valueList.get(j));

//同样调整对应的key值

keyList.set(j, keyList.get(i));

keyList.set(i, kyeList.get(j));

}

}

然后依次把key值和对应value值重新装入HashMap即可。

2)方法二:改写JDK提供的Comparator接口方法compare

List> list = new LinkedList>();

list.addAll(map.entrySet());

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

public int compare(Map.Entry obj1, Map.Entry obj2) {//从高往低排序

if(Integer.parseInt(obj1.getValue().toString())

return 1;

if(Integer.parseInt(obj1.getValue().toString())==Integer.parseInt(obj2.getValue().toString()))

return 0;

else

return -1;

}

});

for(Iterator> ite = list.iterator(); ite.hasNext();) {

Map.Entry map = ite.next();

System.out.println("key-value: " + map.getKey() + "," + map.getValue());

}

java的hashmap排序_java 中HashMap排序相关推荐

  1. java中集合的排序_Java中集合排序的两种方法

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...

  2. java vector的排序_java 中vector 排序

    展开全部 自定义排序吧,自己写一62616964757a686964616fe58685e5aeb931333332623436个比较子, 实现Comparator借口, 在比较子之中实现自己的比较规 ...

  3. java大string排序_java中字符串排序,String 转化为int比较大小

    引入题目 题目描述 设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 ...

  4. java hashmap 常用方法_Java的HashMap中的常用方法总结

    HashMap在编程中是一个非常有用的工具,使用的频率很高,所以本文简单总结一下hashmap的常用方法 遍历HashMap 可以通过entryset取得iter,然后逐个遍历 Iterator it ...

  5. java 排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  6. java中queue排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  7. java hashmap遍历顺序_Java中HashMap遍历的两种方式

    第一种: Map map =  HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...

  8. java中哈希表怎么表示_java中HashMap概念是什么?怎么存取实现它?

    时代总是在不断的变化发展的,高新技术的应用也越来越普遍,大家对于新知识的渴望越来越强烈.java中很多的基础知识都是非常重要的.一起来看看关于HashMap的知识吧. 一. HashMap概述: Ha ...

  9. java 链接重排序_JAVA中JVM的重排序详细介绍

    重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段.重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境 在并发程序中,程序员会特别关注不同进程或 ...

  10. 选择排序java从小到大代码_java中选择排序与归并排序的内容,详细解析

    上次我们已经为大家介绍过java中插入.分治和快速排序的内容,今天再来为大家介绍一下java中选择排序与归并排序的具体内容,并且通过实际的代码为大家解析. 首先我们需要了解的是,选择排序也是一种简单直 ...

最新文章

  1. [译] React 路由和 React 组件的爱恨情仇
  2. SNDA(上海)招聘中、高级ASP.NET开发人员(2名)
  3. 【剑指offer-Java版】25二叉树中和为某一值的路径
  4. 【树莓派】关于tinyproxy问题处理
  5. VTK:Utilities之DataAnimationSubclass
  6. Git利用命令行提交代码完整步骤
  7. C 语言高效编程与代码优化
  8. vuejs构建的单页面应用history模式子页面微信分享在iOS中遇到的问题
  9. Chrome 自动填充的表单是淡黄色的背景怎么办!
  10. JavaScript学习总结(四)——逻辑OR运算符详解
  11. Unsigned 陷阱
  12. 漫步线性代数十二——网络
  13. qt中append函数_Qt 加载cern-root库 并调用root类
  14. C语言中static的用法
  15. 操作系统—内存的动态分区分配算法
  16. 包管理conda操作,常用conda命令
  17. 【.NET程序员面试题----初级】第一卷
  18. android 监听连续点击,android基础之点击监听器的2种监听实现
  19. 微信接入之获取用户头像
  20. JS-part12.3-ES6- 箭头函数 / 函数的参数默认值 / 模板字符串 / 点点点运算符 / 解构赋值 / 对象的简写形式

热门文章

  1. 前端之JavaScript入门篇
  2. steam host修改
  3. 生信技能树 电脑配置linux,2019-07-23生信Linux20题---生信技能树
  4. 计算机系统基础lab2(二进制炸弹实验)
  5. servlet请求转发html页面乱码问题
  6. 马哥2019python全套视频-马哥Python60集全套视频网盘链接免费分享
  7. windows 一键设置ip地址脚本
  8. BRVAH万能适配器
  9. 正好股票开户指数大跌分解比较严重
  10. C语言面试题 - 指针概念