一、简单描述

Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,HashTable以及LinkedHashMap等。

TreeMap:能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

HashMap的值是没有顺序的,它是按照key的HashCode来实现的,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

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

        Map< Integer, String> map=new TreeMap<>(new Comparator<Integer>() {

            @Override
public int compare(Integer o1, Integer o2) {
// return o1.compareTo(o2); //按照key值大小升序排列 -o1.compareTo(o2)即o2.compareTo(o1)按照key值大小降序排列
return -; //按put反顺序排序 1则为 put顺序排列
}
});
map.put(, "a");
map.put(, "c");
map.put(, "b");
map.put(, "d");
map.put(, "e");
for(Entry<Integer, String> aEntry:map.entrySet()) {
System.out.println(aEntry.getKey()+":"+aEntry.getValue());
}

如果想通过key值排序  则需要通过List解决

Map< Integer, String> map=new TreeMap<>();
map.put(, "a");
map.put(, "c");
map.put(, "b");
map.put(, "d");
map.put(, "e");
List<Entry<Integer,String>> list =new ArrayList<Entry<Integer,String>>(map.entrySet());
Collections.sort(list, new Comparator<Entry<Integer, String>>() { @Override
public int compare(Entry<Integer, String> o1, Entry<Integer, String> o2) {
// TODO Auto-generated method stub
return o1.getValue().compareTo(o2.getValue());
}
});
for(Entry<Integer, String> aEntry:list) {
System.out.println(aEntry.getKey()+":"+aEntry.getValue());
}

运行结果为:

:a
:b
:c
:d
:e

对于HashMap来说  没法使用比较器:Comparator  则可以用TreeMap的第二种方法  代码一样

最后友情提示一点:

有时候代码没问题 list老是报错(The type List is not generic; it cannot be parameterized with arguments )

则是自动导入了import java.awt.List;而不是import java.util.List;

HashMap和TreeMap的常用排序方法的更多相关文章

  1. [Java] HashMap、TreeMap、Hashtable排序

    Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可 ...

  2. Python实现的常用排序方法

    1.冒泡排序,相邻位置比较大小,将比较大的(或小的)交换位置 def maopao(a):     for i in range(0,len(a)):         for j in range(0 ...

  3. java常见排序方法

    1.java常用排序方法 1) 选择排序         原理:a. 将数组中的每个元素,与第一个元素比较          如果这个元素小于第一个元素, 就将这个         两个元素交换.   ...

  4. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  5. 算法竞赛中的常用JAVA API :HashMap 和 TreeMap(转载)

    算法竞赛中的常用JAVA API :HashMap 和 TreeMap 摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实 ...

  6. 通过写一个Demo展示C#中多种常用的集合排序方法

    不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧! namespace Demo { /// <summary> /// ...

  7. HashMap与TreeMap按照key和value排序

    package com.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Compara ...

  8. 常用Java API:HashMap 和 TreeMap

    摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实现,是无序的 clear()//清空. containsKey(Obje ...

  9. javascript总结24:Array常用的队列操作和排序方法

    1 数组-引用类型 JavaScript中的内置对象 复习数组的使用 两种创建数组的方式 Array对象的属性 length 获取数组的长度(元素个数) 2 常用方法 : 检测数组 instanceo ...

随机推荐

  1. CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64

    因为服务器缺少php gd库,因为系统是centos,就是用yum去安装,一安装就报错如下: [root@iZ28sdxghs2Z ~]# yum install php-gd Loaded plug ...

  2. Dungeon Master(逃脱大师)-BFS

    Dungeon Master Description You are trapped in a 3D dungeon and need to find the quickest way out! Th ...

  3. python编写登录接口

    要求: 输入用户名密码     认证成功显示欢迎信息 输错三次以后锁定 代码如下: # Author:YKwhile(True): select=input('请问是注册还是登录') if selec ...

  4. POJ:2492-Bug's Life(二分图的判定)

    Bug's Life Time Limit: 10000MS Memory Limit: 65536K Description Background Professor Hopper is resea ...

  5. Linux命令之---mv

    命令简介 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files) 命令格式 mv [选项] 源文件或目录 目标文件或目录 命令参数 -b 若需覆盖文件,则覆 ...

  6. CSS需要注意的问题1(转生活因拼搏而精彩的网易博客)

      1.检查HTML元素(如:<ul>.<div>).属性(如:class=”")是否有拼写错误.是否忘记结束标记(如:<br />) 因为Xhtml 语 ...

  7. “帮你APP”团队冲刺5

    1.整个项目预期的任务量 (任务量 = 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’) : 所有工作的预期时间:88h 目前已经 ...

  8. mysql 分类

    一.系统变量 说明:变量由系统提供,不用自定义 语法: 1.查看系统变量 show[global | session]varisables like ‘ ’:如果没有显示声明global 还是sess ...

  9. Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程

    前言 百度了一下才知道,传智的邹老师桃李满天下呀,我也是邹老师的粉丝,最开始学习页面生命周期的时候也是看了邹老师的视频. 本人是参考了以下前辈的作品,本文中也参合了本人心得,绝非有意盗版,旨在传播,最 ...

  10. 设计模式之第16章-代理模式(Java实现)

    设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫 ...