广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java中Map排序的实现
  • 262
分享到

java中Map排序的实现

java教程javaMap排序 2020-03-03 14:03:39 262人浏览 绘本
摘要

map是键值对的集合接口,它的实现类主要包括:HashMap、TreeMap、Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):HashMap:我们最常用的Map,它根据key的HashCode 值来存储

map是键值对的集合接口,它的实现类主要包括:HashMapTreeMapHashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):

HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null。非同步的。

TreeMap: 能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

在线学习课程分享:java课程

Map排序

TreeMap

TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator

Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于、等于或者大于o2分别返回负整数、0或者正整数。如下:

public class TreeMapTest {
    public static void main(String[] args) {
        Map map = new TreeMap(
                new Comparator() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }
                });
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "DDDdd");
 
        Set keySet = map.keySet();
        Iterator iter = keySet.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + map.get(key));
        }
    }
}

运行结果如下:

ab5ad74957d9c5f5972ea4bd79893f2.png

上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List list, Comparator c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。

但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较。如下:

public class TreeMapTest {
    public static void main(String[] args) {
        Map map = new TreeMap();
        map.put("d", "ddddd");
        map.put("b", "bbbbb");
        map.put("a", "aaaaa");
        map.put("c", "ccccc");
 
        //这里将map.entrySet()转换成list
        List> list = new ArrayList>(map.entrySet());
        //然后通过比较器来实现排序
        Collections.sort(list,new Comparator>() {
            //升序排序
            public int compare(Entry o1,
                    Entry o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
 
        });
 
        for(Map.Entry mapping:list){ 
               System.out.println(mapping.geTKEy()+":"+mapping.getValue()); 
          } 
    }
}

运行结果

d7dc82eabd97fc6cdda93ff8981cb4b.png

HashMap

我们都是HashMap的值是没有顺序的,他是按照key的HashCode来实现的。对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序,我们一样的也可以实现HashMap的排序。

public class HashMapTest {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");
 
        List> list = new ArrayList>(map.entrySet());
        Collections.sort(list,new Comparator>() {
            //升序排序
            public int compare(Entry o1,
                    Entry o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
 
        });
 
        for(Map.Entry mapping:list){ 
               System.out.println(mapping.getKey()+":"+mapping.getValue()); 
          } 
     }
}

运行结果:

bbf15c94d8b99f956fbad4790795aff.png

更多相关文章教程推荐:java入门

--结束END--

本文标题: java中Map排序的实现

本文链接: https://www.lsjlt.com/news/3124.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • java中Map排序的实现
    map是键值对的集合接口,它的实现类主要包括:HashMap、TreeMap、Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):HashMap:我们最常用的Map,它根据key的HashCode 值来存储...
    99+
    2020-03-03
    java教程 java Map 排序
  • GO中对map排序的实现
    目录前言按Key顺序输出map按Value顺序输出map前言 GO语言中,map是哈希表,能够将特定类型的key映射到特定类型的Value上。在查询Map里面的内容时,其时间复杂度为...
    99+
    2023-03-06
    GO map排序 GO map key排序 GO map value排序
  • java中对Map中的key顺序排序
    使用List的默认方法 sort 或者 Collections.sort 进行排序这种方法需要对map的key进行转换 Map map=new HashMap();map.put("4","maliu...
    99+
    2023-09-22
    java
  • java map根据值排序怎么实现
    要根据Map的值进行排序,可以使用Java 8中的Stream和Lambda表达式来实现。下面是一个示例代码: import jav...
    99+
    2023-10-21
    java
  • java map的key排序吗
    java map的key排序吗java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMap,Map不允许键重复,但允许值重复1.Ha...
    99+
    2016-04-13
    java基础 java map key 排序
  • java中map可以按key排序吗?
    map可以按key排序吗?map可以按key排序,下面通过实例来看看。示例:Java Map 按Key排序和按Value排序package test; import java.util.ArrayList; import java.uti...
    99+
    2019-04-18
    java教程 java map
  • java中的map可以根据key排序吗
    java中map常用排序方式:按键排序(sort by key), 按值排序(sort by value)。推荐:java视频教程按键排序jdk内置的java.util包下的TreeMap既可满足此类需求,向其构造方法 TreeMap(Co...
    99+
    2020-04-19
    java map
  • java可以对map的key排序吗
    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 (推荐学习:java课程)TreeMap:基于红黑树(Red-Black tree)的 Navigab...
    99+
    2017-10-20
    java入门 java
  • Java项目中怎么对Map进行排序
    这篇文章将为大家详细讲解有关Java项目中怎么对Map进行排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Java Map的排序实例详解要对Map中的key-value键值对进...
    99+
    2023-05-31
    java map 进行排序
  • java中 Set与Map排序输出到Writer详解及实例
     java中 Set与Map排序输出到Writer详解及实例一般来说java.util.Set,java.util.Map输出的内容的顺序并不是按key的顺序排列的,但是java.util.TreeMap,java.util.Tr...
    99+
    2023-05-31
    java set map
  • GO中怎么对map排序
    本篇内容主要讲解“GO中怎么对map排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“GO中怎么对map排序”吧!前言GO语言中,map是哈希表,能够将特定类型的key映射到特定类型的Value...
    99+
    2023-07-05
  • Java中的lambda和stream实现排序
    目录前言1、定义一个基础类2、使用Comparator排序3、使用lambda排序4、使用Comparator的comparing方法排序5、自定义比对方法6、使用stream排序7...
    99+
    2022-11-13
  • Java的堆排序、快速排序、归并排序怎么实现
    本文小编为大家详细介绍“Java的堆排序、快速排序、归并排序怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的堆排序、快速排序、归并排序怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。堆排序...
    99+
    2023-06-26
  • Java中arraylist排序怎么实现
    Java中可以使用Collections.sort()方法对ArrayList进行排序,具体实现步骤如下:1. 首先导入java.u...
    99+
    2023-09-14
    Java arraylist
  • Java中怎么实现堆排序
    本篇文章给大家分享的是有关Java中怎么实现堆排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法...
    99+
    2023-06-17
  • java中怎么实现冒泡排序和选择排序
    这篇文章将为大家详细讲解有关java中怎么实现冒泡排序和选择排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、冒泡排序冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序...
    99+
    2023-06-20
  • Java实现插入排序,希尔排序和归并排序
    目录插入排序算法步骤动图演示JavaScript代码实现Python代码实现Go代码实现Java代码实现希尔排序算法步骤JavaScript代码实现python代码实现Go代码实现J...
    99+
    2022-12-22
    Java插入排序 Java希尔排序 Java归并排序 Java排序
  • java 中List按照date排序的实现
    java 中List按照date排序的实现今天开发需要对一个list进行排序,要求对里面的date类型的属性进行排序,不多说,直接上代码。Leavecalendar这个bean类里面有属性date;private Date Date; //...
    99+
    2023-05-31
    java list date
  • Java实现选择排序
    问题描述 利用选择排序把一列数组按从小到大或从大到小排序 (一)、选择排序思想 以从小到大为例: 1、第一轮选择,从第一个数开始,依次比较后面所有的数,不断选出当前最小的数,直到选出...
    99+
    2022-11-12
  • Java实现插入排序
    问题描述 利用插入排序把一列数组按从小到大或从大到小排序 (一)、插入排序思想 以从小到大为例: 1、第一轮插入,从第二个数开始,与前面的数依次比较,遇到比自己小的数,就插入到该数后...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作