这篇文章主要介绍了Java 对HashMap进行排序的三种常见方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下,首先来看看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进行排序的资料请关注我们其它相关文章!

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

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

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

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

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

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

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

  4. java 怎么自定义排序_Java如何实现List自定义排序

    Java如何实现List自定义排序,自定义,即为,详细内容,相关文章,更多关于 Java如何实现List自定义排序 易采站长站,站长之家为您整理了Java如何实现List自定义排序的相关内容. 实体类 ...

  5. java面试排序都考哪几种排序_java算法面试题:排序都有哪几种方法?

    一.冒泡排序 [java] view plain copy package sort.bubble; import java.util.Random; /** * 依次比较相邻的两个数,将小数放在前面 ...

  6. java给xyz大小排序_java递归实现string xyz排序

    先用上面的一张图说明逻辑,这就是递归的逻辑. xy排序就相当于在x的空位插上y,x只有两个空位,y插前面得带yx,y插后面得到xy xyz排序就相当于在xy排序的所有结果插上z,结果如图 代码实现如下 ...

  7. es修改排序_java 如何实现ElasticSearch自定义排序

    1.es版本用的是5.1由于需要使用es的script的inline功能,需要修改es yml的配置文件,增加如下配置使其支持inline script.inline: on script.store ...

  8. java equals重写原则_java中为何重写equals时必须重写hashCode方法详解

    前言 大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至于为什么重写这两个方法很多人都搞不明白. 在上一篇博文Ja ...

  9. java如何遍历字典_Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  10. java8 treemap 排序_Java中TreeMap按照KEY排序实现讲解

    TreeMap 是一个有序的key-value集合,它是通过红黑树实现的,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法.继承于A ...

最新文章

  1. COM 组件设计与应用(六)——用 ATL 写第一个组件(vc.net)
  2. 剑指offer 算法 (举例让抽象具体化)
  3. Day 14 知识点串讲 下
  4. 大数据独角兽TOP10榜单发布,“内永洪,外Tableau”领跑BI领域
  5. k8s 使用helm部署dashboard
  6. Tengine-Ngnix高级版
  7. 【渝粤教育】广东开放大学 21秋期末考试 公共政策学10855K1
  8. java面试题6 牛客:哪个关键字可以对对象加互斥锁?
  9. ajax ★ ★ ★ ★ ★
  10. 设计灵感|美容护肤主题,图文排版在Banner中的正确打开位置!
  11. windows 安装tomcat 7
  12. And seeing the whole machine market
  13. SharePoint2010部署(一)---数据库的安装
  14. 《第一本docker书》第4章 使用docker镜像和仓库 读书笔记
  15. Spring源码阅读-BeanFactory初始化-配置加载
  16. 有限元分析简介及伽辽金法
  17. vue echarts 柱状图
  18. 众觅,让支付宝『到位』全国到位
  19. Hibernate 枚举类型@Enumerated(EnumType.STRING)的应用
  20. 3小时入门微信小程序开发 --公开课学习笔记

热门文章

  1. 思科与华为常用交换机产品线介绍
  2. 用代码生成Glitch Art风格的抖音字体
  3. JAVA菜鸟入门(8) Java的Final关键字
  4. 《嵌入式 – GD32开发实战指南》第10章 串口通信
  5. linux将字符串改大写,【已解决】makefile中把字符串转换为小写或大写
  6. C# 创建基于TCP、HTTP协议的JsonRpc 2.0(可跨平台、跨语言)
  7. WBS 工作分解结构
  8. 人人商城小程序不能显示批发商品修复方法
  9. NLP文本情感——SNOWNLP简易版
  10. 手写minist的DataLoader