美文网首页
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

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