我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java如何实现HashMap排序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java如何实现HashMap排序

这篇文章主要介绍了Java如何实现HashMap排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现HashMap排序文章都会有所收获,下面我们一起来看看吧。

排序已有数据

按key排序

使用stream进行排序(按key升序/降序)

package org.example.a; import java.util.*; public class Demo {    public static void main(String[] args) {        Map<String, String> map = new HashMap<>();        map.put("ad", "dd");        map.put("bc", "ee");        map.put("cb", "ff");        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         Map<String, String> linkedHashMap = new LinkedHashMap<>();        // 默认按照升序排列        map.entrySet().stream().sorted(Map.Entry.comparingByKey())                .forEach(o -> linkedHashMap.put(o.getKey(), o.getValue()));        for (Map.Entry<String, String> entry : linkedHashMap.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         Map<String, String> linkedHashMap1 = new LinkedHashMap<>();        // 自定义排序(降序)        map.entrySet().stream().sorted(Map.Entry.comparingByKey(new Comparator<String>() {            @Override            public int compare(String o1, String o2) {                return o2.compareTo(o1);            }        })).forEach(o -> linkedHashMap1.put(o.getKey(), o.getValue()));        for (Map.Entry<String, String> entry : linkedHashMap1.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }}

执行结果

bc:ee
ad:dd
cb:ff
 
ad:dd
bc:ee
cb:ff
 
cb:ff
bc:ee
ad:dd

HashMap转TreeMap自定义排序(按key升序/降序)

package org.example.a; import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.TreeMap; public class Demo {    public static void main(String[] args) {        Map<String, String> map = new HashMap<>();        map.put("ad", "dd");        map.put("bc", "ee");        map.put("cb", "ff");        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();        // 默认按照升序排序        Map<String, String> map1 = new TreeMap<>();        map.forEach(map1::put);        for (Map.Entry<String, String> entry : map1.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         // 自定义排序(降序)        Map<String, String> map2 = new TreeMap<>(new Comparator<String>() {            @Override            public int compare(String o1, String o2) {                return o2.compareTo(o1);            }        });        map.forEach(map2::put);        for (Map.Entry<String, String> entry : map2.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }}

执行结果

bc:ee
ad:dd
cb:ff
 
ad:dd
bc:ee
cb:ff
 
cb:ff
bc:ee
ad:dd

按value排序

使用stream进行排序(按value升序/降序)

package org.example.a; import java.util.*; public class Demo {    public static void main(String[] args) {        Map<String, String> map = new HashMap<>();        map.put("ad", "dd");        map.put("bc", "ee");        map.put("cb", "ff");        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         Map<String, String> linkedHashMap = new LinkedHashMap<>();        // 默认按照升序排列        map.entrySet().stream().sorted(Map.Entry.comparingByValue())                .forEach(o -> linkedHashMap.put(o.getKey(), o.getValue()));        for (Map.Entry<String, String> entry : linkedHashMap.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         Map<String, String> linkedHashMap1 = new LinkedHashMap<>();        // 自定义排序(降序)        map.entrySet().stream().sorted(Map.Entry.comparingByValue(new Comparator<String>() {            @Override            public int compare(String o1, String o2) {                return o2.compareTo(o1);            }        })).forEach(o -> linkedHashMap1.put(o.getKey(), o.getValue()));        for (Map.Entry<String, String> entry : linkedHashMap1.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }}

执行结果

bc:ee
ad:dd
cb:ff
 
ad:dd
bc:ee
cb:ff
 
cb:ff
bc:ee
ad:dd

借助List进行排序(按value升序/降序)

原理:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List<T> list, Comparator<? super T> c) 来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。

本处只写升序代码,降序只是调换个顺序而已。

package org.example.a; import java.util.*; public class Demo {    public static void main(String[] args) {        Map<String, String> map = new HashMap<>();        map.put("ad", "dd");        map.put("bc", "ee");        map.put("cb", "ff");        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }        System.out.println();         Map<String, String> sortedMap = new LinkedHashMap<>();        List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(                map.entrySet());        Collections.sort(entryList, new Comparator<Map.Entry<String, String>>() {            @Override            public int compare(Map.Entry<String, String> me1, Map.Entry<String, String> me2) {                return me1.getValue().compareTo(me2.getValue());            }        });        for (Map.Entry<String, String> stringStringEntry : entryList) {            sortedMap.put(stringStringEntry.getKey(), stringStringEntry.getValue());        }         for (Map.Entry<String, String> entry : sortedMap.entrySet()) {            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }}

运行结果

bc:ee
ad:dd
cb:ff
 
ad:dd
bc:ee
cb:ff

按插入顺序存放

HashMap不按插入顺序存放

package org.example.a; import java.util.*; public class Demo{    public static List arrayList = new ArrayList();    public static void main(String[] args) {        Map<String, String> hashMap = new HashMap<String, String>();        hashMap.put("name1", "josan1");        hashMap.put("name2", "josan2");        hashMap.put("name3", "josan3");                Set<Map.Entry<String, String>> set = hashMap.entrySet();        Iterator<Map.Entry<String, String>> iterator = set.iterator();        while(iterator.hasNext()) {            Map.Entry entry = iterator.next();            String key = (String) entry.getKey();            String value = (String) entry.getValue();            System.out.println("key:" + key + ", value:" + value);        }    }}

执行结果(未按照插入顺序输出)

key:name3, value:josan3
key:name2, value:josan2
key:name1, value:josan1

LinkedHashMap会按照插入顺序存放

package org.example.a; import java.util.*; public class Demo{    public static List arrayList = new ArrayList();    public static void main(String[] args) {        Map<String, String> hashMap = new LinkedHashMap<String, String>();        hashMap.put("name1", "josan1");        hashMap.put("name2", "josan2");        hashMap.put("name3", "josan3");         Set<Map.Entry<String, String>> set = hashMap.entrySet();        Iterator<Map.Entry<String, String>> iterator = set.iterator();        while(iterator.hasNext()) {            Map.Entry entry = iterator.next();            String key = (String) entry.getKey();            String value = (String) entry.getValue();            System.out.println("key:" + key + ", value:" + value);        }    }}

执行结果(按照插入顺序输出)

key:name1, value:josan1
key:name2, value:josan2
key:name3, value:josan3 

关于“Java如何实现HashMap排序”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java如何实现HashMap排序”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java如何实现HashMap排序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java如何实现HashMap排序

这篇文章主要介绍了Java如何实现HashMap排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现HashMap排序文章都会有所收获,下面我们一起来看看吧。排序已有数据按key排序使用strea
2023-06-30

Android中实现HashMap排序的方法

HashMap排序是数据结构与算法中常见的一种排序算法。本文即以Android平台为例来实现该算法。 具体代码如下:public static void main(String[] args) {Map m
2022-06-06

Java如何实现ArrayList排序

这篇文章主要介绍“Java如何实现ArrayList排序”,在日常操作中,相信很多人在Java如何实现ArrayList排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现ArrayList排序
2023-06-30

Java排序算法之堆排序如何实现

这篇文章主要介绍了Java排序算法之堆排序如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性︰1.父结点的键值总
2023-06-21

Java如何实现拓扑排序

今天小编给大家分享一下Java如何实现拓扑排序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。铺垫有向图:我们这节要讲的算法涉
2023-06-30

Java冒泡排序如何实现

这篇文章主要为大家展示了“Java冒泡排序如何实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java冒泡排序如何实现”这篇文章吧。算法描述:对于给定的n个记录,从第一个记录开始依次对相邻的两
2023-05-30

java如何实现数组排序

这篇文章主要为大家展示了“java如何实现数组排序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现数组排序”这篇文章吧。数组排序(冒泡排序)public class TestDem
2023-06-27

java集合排序如何实现

Java集合的排序可以通过以下几种方式实现:使用Collections.sort()方法:对List集合进行排序时,可以使用Collections类的sort()方法来实现。该方法会根据集合元素的自然顺序进行排序,或者可以自定义比较器来指定
2023-10-26

Java排序算法之计数排序如何实现

这篇文章主要为大家展示了“Java排序算法之计数排序如何实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java排序算法之计数排序如何实现”这篇文章吧。计数排序是非比较的排序算法,用辅助数组对
2023-06-21

Java如何实现冒泡排序与选择排序

小编给大家分享一下Java如何实现冒泡排序与选择排序,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.冒泡排序1.概念冒泡排序这种排序方法其实关键词就在于冒泡两个
2023-06-22

Java如何实现简单的排序

这篇文章主要介绍Java如何实现简单的排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的
2023-06-25

java中如何实现快速排序

下面由java入门学习栏目为大家介绍java中如何实现快速排序,希望这种算法排序可以帮助到大家!快速排序的时间复杂度并不固定,如果在最坏情况下(在一个原本逆向排序的数列中选择第一个元素为基准元素)速度比较慢,达到 O(n^2)(和选择排序一个效率),但是如果在
java中如何实现快速排序
2018-05-13

Java如何实现二叉排序树

这篇文章给大家分享的是有关Java如何实现二叉排序树的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 二叉排序树的概述对于常见查找算法,比如顺序查找、二分查找、插入查找、斐波那契查找还不清楚的,可以看这篇文章:常
2023-06-28

如何利用java实现归并排序

什么是归并排序?归并排序是利用递归与分治的技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好序的半子表合并成越来越大的有序序列。核心思想将两个有序的数列合并成一个大的有序的序列。通过递归,层层合并,即为归并。(推荐教程:java快速入
如何利用java实现归并排序
2018-05-27

java如何实现快速排序算法

这篇文章将为大家详细讲解有关java如何实现快速排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。快速排序算法使用的分治法策略来把一个序列分为两个子序列来实现排序的思路:1.从数列中挑出一个元素,称为
2023-06-02

Java中怎么对HashMap按键值排序

本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. HashMap存储每对键和值作为一个Entry
2023-06-17

thinkphp如何实现排序

这篇文章主要介绍“thinkphp如何实现排序”,在日常操作中,相信很多人在thinkphp如何实现排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp如何实现排序”的疑惑有所帮助!接下来,请跟
2023-07-04

C++如何实现序列排序

这篇文章主要讲解了“C++如何实现序列排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现序列排序”吧!Permutation Sequence 序列排序The set [1,2
2023-06-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录