首先来看看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. html5图片怎么顶格,iQOO 5系列几乎达到了“顶格”的性能状态。
  2. 从Spring起,Java EE 6必须具备哪些附加功能?
  3. dom4j的读写xml文件,读写xml字符串
  4. 神奇的python(五)之python强制退出报错(异常)解决方法
  5. Git学习笔记与IntelliJ IDEA整合
  6. 花瓣网爬取美女图片 每次20张
  7. 计算机无法访问网络位置,不能访问网络位置,详细教您怎么解决
  8. 学生信息管理系统-web项目实训(基于JAVA)
  9. 数据集大小与模型性能的敏感性分析
  10. Python学习资料全面总结,真的对零基础很有用
  11. 码农翻身讲网络2:TCP协议
  12. 十二道锋味——既是食,也是人
  13. 国信证券学习系列(4)
  14. Linux系统安装单机版K8S
  15. 引导图(GuideView)
  16. 5.7.2 使用设计视图创建交叉表查询
  17. 查重or真伪查验or原件管理,电子发票三大难题,哪个更让人上火?
  18. 词云生成库wordcloud详解(三):IntegralOccupancyMap类——词云布局机制
  19. jmeter如何绕过登录做压力测试?
  20. 论文中页眉页脚的设置方法~【转】

热门文章

  1. 64qam带宽计算_64QAM有效传输速率计算
  2. Android中的Builder模式
  3. AI图片翻译助手软件FAQ
  4. 驱动程序安装全攻略2
  5. Linux_版简易C语言IDE制作
  6. c语言算除法并转百分比,【转】C语言除法运算符“/”和求余运算符“%”
  7. 5个不可多得的黑科技网站,让你在办公中如有神助,请低调收藏
  8. python调用大漠插件、检测么_python调用大漠插件教程05字库
  9. YOLO算法的发展历程
  10. 数据线CE测试标准 准备资料