类介绍
定位
SortedMap
类是在Map
的基础上增加了排序的功能。Map
和Set
一样,原本是没有强制顺序的,大概就是放入、存在性判断、取出几种常用操作。大概猜测一下,这个类和SortedSet
的定位很像,都是给无序的一个集合增加了顺序。所以多出来的方法也差不多。
继承关系分析
1.png挺简单的,直接在Map
的基础上进行了接口的扩展。
注意事项
没啥要特殊说的。
源码介绍
Comparator<? super K> comparator();
用来进行排序的比较器,如果有就按照这个排序,如果没有就按照key
的Comparable
接口的方法排序
SortedMap<K,V> subMap(K fromKey, K toKey);
SortedMap<K,V> headMap(K toKey);
SortedMap<K,V> tailMap(K fromKey);
K firstKey();
K lastKey();
Set<K> keySet();
Collection<V> values();
注意这里values
的排序是按照他们的key
的排序。不要想太多。
Set<Map.Entry<K, V>> entrySet();
思考
注意
- 它不支持多线程,如果要自己实现一个支持多线程的类,自己控制实现
- 它的所有生成子
Map
的操作都是fail-fast
的。至于意味着什么就自己去回想吧。
和SortedSet
比较
不同点
-
类继承关系不同:
-
SortedSet
是从Iterable->Collection->Set->SortedSet
这样继承下来的,有Collection
中的很多方法。比如spliterator()
,stream()
之类的支持比较好 -
SortedMap
是从Map->SortedMap
继承下来的。它的父类和Collection
是并列的。它的遍历操作一般是返回Collection
然后接入Collection
的方法进行的
-
-
数据存储、方法支持不同
-
SortedSet
只存一套值,所以只有Set/Collection
的增删查 -
SortedMap
存两套值:key->value
,所以有改的操作:改value
-
相同点
-
他们的父类都是无序的,他们实现了排序
-
他们都是
fali-fast
的 -
他们的排序操作相似,提供了最基本的对有序数据的操作
网友评论