首先来看看Map集合获取元素的三种常见方法keySet()、values()、entrySet()

1. values():

返回map集合的所有value的Collection集合(于集合中无序存放)

import java.util.*;

public class Main{

public static void main(String[] args){

Map map = new HashMap(); //构建键值对为的Map集合

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

Collection collection = map.values(); //获取map集合的所有value的Collection集合(于集合中无序存放)

System.out.println(collection);

}

}

/**

* 运行结果

* [bbb, ccc, aaa]

*/

2. keySet():

返回map集合的所有键的Set集合(于Set集合中无序存放)

通过迭代取出所有key,再利用get()方法获取value, for(类型 元素: 集合) 的本质是获取集合的迭代器进行迭代

import java.util.*;

public class Main{

public static void main(String[] args){

Map map = new HashMap(); //构建键值对为的Map集合

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

Set keySet = map.keySet(); //获取map集合的所有键的Set集合(于Set集合中无序存放)

Iterator iter = keySet.iterator(); //获取keySet集合的迭代器

while(iter.hasNext()){

String key = iter.next();

String value = map.get(key);

System.out.println("key:" + key + "-->value:" + value);

}

/*

for(String key: keySet){

String value = map.get(key);

System.out.println("key:" + key + "-->value:" + value);

}

*/

}

}

/**

* 运行结果

* key:b-->value:bbb

* key:c-->value:ccc

* key:a-->value:aaa

*/

3. entrySet():

返回map集合的所有"映射"的Set集合,这里规范每个"映射"的类型为Map.Entry(于Set集合中无序存放)

通过迭代取出所有的“映射”,再利用getKey()、getValue()方法获取相应键、值

import java.util.*;

public class Main{

public static void main(String[] args){

Map map = new HashMap(); //构建键值对为的Map集合

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

Set> entrySet = map.entrySet(); //获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry(于Set集合中无序存放)

Iterator> iter = entrySet.iterator(); //获取entrySet集合的迭代器,Map.Entry为迭代元素的类型

while(iter.hasNext()){

Map.Entry item = iter.next();

String key = item.getKey();

String value = item.getValue();

System.out.println("key:" + key + "-->value:" + value);

}

/*

for(Map.Entry item: entrySet){

String key = item.getKey();

String value = item.getValue();

System.out.println("key:" + key + "-->value:" + value);

}

*/

}

}

/**

* 运行结果

* key:b-->value:bbb

* key:c-->value:ccc

* key:a-->value:aaa

*/

有以上方法作为基础,那么我们很容易想到对HashMap进行排序的两种方法

1. 通过keySet()获取Map集合的所有键的Set集合,由List集合获取其中所有元素,通过比较器对元素为键的List集合进行排序

2. 通过entrySet()获取Map集合所有映射的Set集合,由List集合获取其中所有元素,通过比较器对元素为"映射"List集合进行排序

通过对比较器compare方法的Override,两者还可以实现利用value进行排序。有关java中Comparable和Comparator比较的详解

import java.util.*;

public class DescKeyComparator implements Comparator{

public static void main(String[] args){

Map map = new HashMap(); //构建键值对为的Map集合

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

Set entrySet = map.keySet(); //获取map集合的所有键的Set集合(于Set集合中无序存放)

List list = new ArrayList(entrySet); //新建List集合获取Set集合的所有元素(键对象)(顺序与Set集合一样)

/**

* 接下来的排序是list的专长了

* 通过“比较器(DescKeyComparator)”,对list进行排序

*/

Collections.sort(list, new DescKeyComparator());

/*

Collections.sort(list); //String实现了Comparable,默认升序排列

*/

Iterator iter = list.iterator(); //获取List集合的迭代器,String为迭代元素的类型

while(iter.hasNext()){

String key = iter.next();

String value = map.get(key);

System.out.println("key:" + key + "-->value:" + value);

}

/*

for(Map.Entry item: list){

String key = iter.next();

String value = map.get(key);

System.out.println("key:" + key + "-->value:" + value);

}

*/

}

@Override

public int compare(String key1, String key2){

return key2.compareTo(key1); //降序排序; String作为api提供的类,实现了Comparable的compareTo方法被设计成小于、等于、大于分别返回负数、零、正数

}

}

/**

* 运行结果

* key:c-->value:ccc

* key:b-->value:bbb

* key:a-->value:aaa

*/

import java.util.*;

public class AscKeyComparator implements Comparator>{

public static void main(String[] args){

Map map = new HashMap(); //构建键值对为的Map集合

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

Set> entrySet = map.entrySet(); //获取map集合的所有"映射"的Set集合,这里规范每个映射的类型为Map.Entry(于Set集合中无序存放)

List> list = new ArrayList>(entrySet); //新建List集合获取Set集合的所有元素("映射"对象)(顺序与Set集合一样)

/**

* 接下来的排序是list的专长了

* 通过“比较器(AscKeyComparator)”,对list进行排序

*/

Collections.sort(list, new AscKeyComparator());

Iterator> iter = list.iterator(); //获取List集合的迭代器,Map.Entry为迭代元素的类型

while(iter.hasNext()){

Map.Entry item = iter.next();

String key = item.getKey();

String value = item.getValue();

System.out.println("key:" + key + "-->value:" + value);

}

/*

for(Map.Entry item: list){

String key = item.getKey();

String value = item.getValue();

System.out.println("key:" + key + "-->value:" + value);

}

*/

}

@Override

public int compare(Map.Entry item1, Map.Entry item2){

return item1.getKey().compareTo(item2.getKey()); //升序排序

}

}

/**

* 运行结果

* key:a-->value:aaa

* key:b-->value:bbb

* key:c-->value:ccc

*/

以上就是Java 对HashMap进行排序的三种常见方法的详细内容,更多关于Java 对HashMap进行排序的资料请关注脚本之家其它相关文章!

hashmap java 排序_Java 对HashMap进行排序的三种常见方法相关推荐

  1. hashmap java 便利_java遍历HashMap的高效方法

    IndexedDB参考资料网址 IndexedDB:浏览器里内置的数据库, Web骇客 http://www.webhek.com/indexeddb/ 前端的数据库:IndexedDB入门(很全面) ...

  2. java常见的ide_在三个Java IDE中生成的三种常见方法

    java常见的ide 在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ e ...

  3. 在三个Java IDE中生成的三种常见方法

    在本文中,我研究了NetBeans 8.0.2 , IntelliJ IDEA 14.0.2和Eclipse Luna 4.4.1生成的三种"通用"方法[ equals(Objec ...

  4. java map 自动排序_Java中Map的排序

    Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...

  5. java comparable排序_java 实现Comparable接口排序,升序、降序、倒叙

    本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序.本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料. 1.实现的效果 2.创建排序的对象 packa ...

  6. java 线性表排序_Java线性表的排序

    Java线性表的排序 前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下"." ...

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

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

  8. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  9. java对象排序_Java™ 教程(对象排序)

    对象排序 List l可以如下排序. Collections.sort(l); 如果List包含String元素,它将按字母顺序排序,如果它由Date元素组成,它将按时间顺序排序,这是怎么发生的?St ...

  10. java字母排序_java可以对字母排序吗?

    java对字母排序代码如下:(推荐:java视频教程)package lianxi.Demo; import java.util.ArrayList; import java.util.List; i ...

最新文章

  1. C#时间(DateTime)格式化
  2. 导出matlab程序,Matlab数据导入导出
  3. spring框架学习1:搭建测试
  4. SpringCloud Alibaba 框架下公司架构图
  5. Scala Object
  6. Hibernate复习笔记
  7. 微信小程序:最新掌上题库微信小程序源码下载,修复登录接口,支持在线考试,自定义导入考题
  8. 单个像素代表的实际物理尺寸
  9. 改ip 银河麒麟_PK体系银河麒麟云桌面和云平台
  10. int,int*,(int*)区别
  11. SSH端口转发Forwarding及隧道Tunneling
  12. 从两个和尚挑水的故事得到的启发
  13. forward完美转发
  14. Tuscany 的说明
  15. pdf转换成excel文件_将PDF文件转换为Excel
  16. 微信小程序私教预约管理系统+后台管理系统
  17. java基于springboot的家庭理财记账
  18. ppt快捷键和字体使用技巧(一)
  19. javascript小技巧JavaScript[对象.属性]集锦(转自飛雪飄寒 )
  20. 淘宝商品信息css+html

热门文章

  1. Arduino IDE 烧录 ESP8266教程
  2. ps一点通精品知识库
  3. python希腊字母大小写的转换_在线英文字母大小写转换工具-包含英文大写转小写-字母小写转大写_蛙蛙在线工具...
  4. Linux基础知识点总结
  5. 【冰点文库下载器.exe】
  6. python snownlp_SnowNLP情感分析+生成词云
  7. python snownlp了解_[Python][snownlp]基于情感词典的情感分析
  8. 交运集团开设“技师工作站“ 创新“机电一体化“人才培养模式
  9. 用HTML和CSS制作简单的静态网页
  10. 这些基础的C语言选择题,不知道你能不能拿下