美文网首页
22-SortedMap

22-SortedMap

作者: 鹏程1995 | 来源:发表于2020-02-04 15:24 被阅读0次

类介绍

定位

SortedMap类是在Map的基础上增加了排序的功能。MapSet一样,原本是没有强制顺序的,大概就是放入、存在性判断、取出几种常用操作。大概猜测一下,这个类和SortedSet的定位很像,都是给无序的一个集合增加了顺序。所以多出来的方法也差不多。

继承关系分析

1.png

挺简单的,直接在Map的基础上进行了接口的扩展。

注意事项

没啥要特殊说的。

源码介绍

Comparator<? super K> comparator();

用来进行排序的比较器,如果有就按照这个排序,如果没有就按照keyComparable接口的方法排序

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();

思考

注意

  1. 它不支持多线程,如果要自己实现一个支持多线程的类,自己控制实现
  2. 它的所有生成子Map的操作都是fail-fast的。至于意味着什么就自己去回想吧。

SortedSet比较

不同点

  1. 类继承关系不同:

    • SortedSet是从Iterable->Collection->Set->SortedSet这样继承下来的,有Collection中的很多方法。比如spliterator(),stream()之类的支持比较好
    • SortedMap是从Map->SortedMap继承下来的。它的父类和Collection是并列的。它的遍历操作一般是返回Collection然后接入Collection的方法进行的
  2. 数据存储、方法支持不同

    • SortedSet只存一套值,所以只有Set/Collection的增删查
    • SortedMap存两套值:key->value,所以有改的操作:改value

相同点

  1. 他们的父类都是无序的,他们实现了排序

  2. 他们都是fali-fast

  3. 他们的排序操作相似,提供了最基本的对有序数据的操作

相关文章

  • 22-SortedMap

    类介绍 定位 SortedMap类是在Map的基础上增加了排序的功能。Map和Set一样,原本是没有强制顺序的,大...

网友评论

      本文标题:22-SortedMap

      本文链接:https://www.haomeiwen.com/subject/mtirxhtx.html