Java集合-SortedMap
SortedMap(java.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
,则可以通过SortedMap
的comparator()
方法获取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相关推荐
- Java 集合之SortedSet和SortedMap
这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能.Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置 ...
- java集合总结_Java中集合总结
Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...
- java集合框架07——Map架构与源代码分析
前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,因为Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set ...
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- Java集合框架List,Map,Set等全面介绍
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.Colle ...
- java集合框架图(一)
一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...
- linux视频教程百度网盘分享,Java集合基础知识总结(绝对经典
2.JAVA集合可以存储和操作数目不固定的一组数据. 3.若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用. 注:使用相应的toArray()和Arr ...
- 容器(一)剖析面试最常见问题之 Java 集合框架
转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...
- java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...
一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...
最新文章
- 皮一皮:六神终于出奶茶了!
- UVa307 - Sticks(DFS+剪枝)
- Python开发爬虫之理论篇
- 向量召回 MIND多兴趣双塔模型
- 个人作业收官——软件工程实践总结
- (王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)
- 正则表达式---------常用字符及其功能
- 进程的创建-fork(python版)
- JS实现表单多文件上传样式美化支持选中文件后删除相关项
- Spring(二)、注解IOC
- jquery各历史版本下载地址
- 优酷kux视频文件转换成mp4格式
- [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
- 排列组合cn和an公式
- 学 C++ ,能不能简单点?
- perl中CPAN的安装
- php 多核cpu,paip.提升性能--多核cpu中的java/.net/php/c++编程
- poi编辑word中的chart,对图表数据替换,并刷新图表
- java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw
- PTA甲级考试真题练习69——1069 The Black Hole of Numbers
热门文章
- PHP副本保存用什么函数,PHP_收藏的PHP常用函数 推荐收藏保存,内容: 复制代码 代码如下: lt - phpStudy...
- github 每次需要输入passphrase for key id_rsa 的解决办法
- 本地搭建的Gitblit代码托管服务器无法pull和push的问题
- Android 适配真要命?
- 全国计算机考试和计算机软件区别,【学生篇】国家软考与计算机等级考试有什么区别...
- H.Shifting
- 关于modbus rtu协议的CRC(循环冗余校验)在线计算
- Job for mysqld.service failed because the control process exited with error code. See “systemctl sta
- TV HD android,X95H 系列 | 4K Ultra HD | Android TV | Sony TW
- Linux让命令居中,Linux 中常用的基础命令