SortedMapjava.util.SortedMap)接口是Map的子接口,SortedMap中增加了元素的排序,这意味着可以给SortedMap中的元素排序。

SortedMap的实现TreeMap

SortedMap接口的实现TreeMap (java.util.TreeMap).

创建TreeMap

可以通过TreeMap的构造函数创建TreeMap 实例:

 
SortedMap sortedMap = new TreeMap();

创建TreeMap使用Comparator

可以使用Comparator的实现作为TreeMap 构造函数的参数 ,这个Comparator将用于对存储在SortedMap中的键、值对的键进行排序:

Comparator comparator = new MyComparatorImpl();SortedMap sortedMap = new TreeMap(comparator);

排序

SortedMap中的排序顺序要么是元素的自然排序顺序(如果它们实现了java.lang.Comparable),或由Comparator确定的顺序。

升序和降序排序

默认的元素迭代顺序是升序,开始是最小的元素,然后逐渐变大,也可以降序迭代,可以使用TreeMap.descendingKeySet()方法。

迭代SortedMap

迭代SortedMap和迭代一般的Map一样,既然SortedMap 的key是有顺序的,所以可以按顺序迭代key,通过调用SortedMap 的 keySet()迭代:

SortedMap sortedMap = new TreeMap();sortedMap.put("a", "one");
sortedMap.put("b", "two");
sortedMap.put("c", "three");Iterator iterator = sortedMap.keySet().iterator();while(iterator.hasNext()) {String key   = (String) iterator.next();String value = (String) sortedMap.get(key);
}

如果需要降序迭代则调用sortedMap.descendingKeySet().iterator()的方法:

SortedMap sortedMap = new TreeMap();sortedMap.put("a", "one");
sortedMap.put("b", "two");
sortedMap.put("c", "three");Iterator iterator = sortedMap.descendingKeySet().iterator();while(iterator.hasNext()) {String key   = (String) iterator.next();String value = (String) sortedMap.get(key);
}

获取Comparator

如果创建SortedMap时使用了Comparator,则可以通过SortedMapcomparator()方法获取Comparator

 
Comparator comparator = sortedMap.comparator();

获取第一个Key

SortedMap接口有个firstKey()方法可以获取第一个元素:

 
String firstKey = (String) sortedMap.firstKey();

获取最后一个Key

SortedMap接口有个lastKey()方法可以获取最后一个元素:

 
String lastKey = (String) sortedMap.lastKey();

Head Map

SortedMap接口有个headMap()方法,返回一个新的Map,这个方法有个参数key,返回的Map中的元素小于这个参数key:

SortedMap sortedMap = new TreeMap();sortedMap.put("a", "1");
sortedMap.put("c", "3");
sortedMap.put("e", "5");
sortedMap.put("d", "4");
sortedMap.put("b", "2");SortedMap headMap = sortedMap.headMap("c");System.out.println(headMap);

headMap中包含 ("a", "1")和("b", "2"),因为"a"和"b"小于"c"。

尾部Map

SortedMap接口有个tailMap()方法,这个方法返回大于等于参数key的键值对:

SortedMap sortedMap = new TreeMap();sortedMap.put("a", "1");
sortedMap.put("c", "3");
sortedMap.put("e", "5");
sortedMap.put("d", "4");
sortedMap.put("b", "2");SortedMap tailMap = sortedMap.tailMap("c");System.out.println(tailMap);

tailMap中包含 ("c", "3"),("d", "4") 和("e", "5"),因为"c", "d"和"e"大于或者等于参数"c" 。

子map

SortedMap中还有个subMap(),这个方法返回SortedMap的一个子Map。subMap()方法中有两个参数是key的值,大于等于第一个key,小于第二个key:

SortedMap sortedMap = new TreeMap();sortedMap.put("a", "1");
sortedMap.put("c", "3");
sortedMap.put("e", "5");
sortedMap.put("d", "4");
sortedMap.put("b", "2");SortedMap subMap = sortedMap.subMap("b", "e");System.out.println(subMap);

subMap中包含 ("b", "2), ("c", "3") 和 ("d", "4") ,因为"b", "c" 和"d"都大于等于"b"并且小于 "e"。

参考:http://tutorials.jenkov.com/java-collections/sortedmap.html

https://blog.csdn.net/cgsyck/article/details/108449964

Java集合-SortedMap相关推荐

  1. Java 集合之SortedSet和SortedMap

    这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能.Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置 ...

  2. java集合总结_Java中集合总结

    Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...

  3. java集合框架07——Map架构与源代码分析

    前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,因为Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set ...

  4. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  5. Java集合框架List,Map,Set等全面介绍

    Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.Colle ...

  6. java集合框架图(一)

    一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...

  7. linux视频教程百度网盘分享,Java集合基础知识总结(绝对经典

    2.JAVA集合可以存储和操作数目不固定的一组数据. 3.若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用. 注:使用相应的toArray()和Arr ...

  8. 容器(一)剖析面试最常见问题之 Java 集合框架

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...

  9. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

最新文章

  1. 皮一皮:六神终于出奶茶了!
  2. UVa307 - Sticks(DFS+剪枝)
  3. Python开发爬虫之理论篇
  4. 向量召回 MIND多兴趣双塔模型
  5. 个人作业收官——软件工程实践总结
  6. (王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)
  7. 正则表达式---------常用字符及其功能
  8. 进程的创建-fork(python版)
  9. JS实现表单多文件上传样式美化支持选中文件后删除相关项
  10. Spring(二)、注解IOC
  11. jquery各历史版本下载地址
  12. 优酷kux视频文件转换成mp4格式
  13. [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
  14. 排列组合cn和an公式
  15. 学 C++ ,能不能简单点?
  16. perl中CPAN的安装
  17. php 多核cpu,paip.提升性能--多核cpu中的java/.net/php/c++编程
  18. poi编辑word中的chart,对图表数据替换,并刷新图表
  19. java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw
  20. PTA甲级考试真题练习69——1069 The Black Hole of Numbers

热门文章

  1. PHP副本保存用什么函数,PHP_收藏的PHP常用函数 推荐收藏保存,内容: 复制代码 代码如下: lt - phpStudy...
  2. github 每次需要输入passphrase for key id_rsa 的解决办法
  3. 本地搭建的Gitblit代码托管服务器无法pull和push的问题
  4. Android 适配真要命?
  5. 全国计算机考试和计算机软件区别,【学生篇】国家软考与计算机等级考试有什么区别...
  6. H.Shifting
  7. 关于modbus rtu协议的CRC(循环冗余校验)在线计算
  8. Job for mysqld.service failed because the control process exited with error code. See “systemctl sta
  9. TV HD android,X95H 系列 | 4K Ultra HD | Android TV | Sony TW
  10. Linux让命令居中,Linux 中常用的基础命令