Module  java.base
软件包  java.util

Interface SortedMap<K,V>

  • 参数类型
    K - 由此地图维护的键的类型
    V - 映射值的类型
    All Superinterfaces:
    Map<K,V>
    All Known Subinterfaces:
    ConcurrentNavigableMap<K,V>NavigableMap<K,V>
    所有已知实现类:
    ConcurrentSkipListMapTreeMap


    public interface SortedMap<K,V>
    extends Map<K,V>
    A Map进一步提供其键上的总排序 该地图是根据有序natural ordering其密钥,或通过Comparator通常在有序映射创建时提供。 遍历有序映射的集合视图(由返回时,这个顺序反映entrySetkeySetvalues方法)。 提供了几个额外的操作来利用订购。 (此界面是SortedSet的地图模拟。)

    插入分拣地图的所有键必须实现Comparable接口(或被指定的比较器接受)。 另外,所有这些键必须是可互相比较的k1.compareTo(k2) (或comparator.compare(k1, k2) )不得抛出ClassCastException任何键k1k2在分类图。 尝试违反此限制将导致违规方法或构造函数调用抛出一个ClassCastException

    请注意,如果排序的映射要正确实现Map接口,由排序映射维护的排序(是否提供显式比较器)必须与equals一致 (见Comparable接口或Comparator接口,用于与等于一致的精确定义)这是因为Map接口是根据equals操作定义的,但是排序映射使用其compareTo (或compare )方法执行所有密钥比较因此,从排序图的角度来看,通过这种方法认为相等的两个关键字是相等的。 树图的行为明确的,即使它的排序与equals不一致; 它只是不符合Map接口的总体合同。

    所有通用排序映射实现类应提供四个“标准”构造函数。 无法通过接口指定必要的构造函数来执行此建议。 所有排序地图实现的预期“标准”构造函数是:

    1. 一个void(无参数)构造函数,它创建一个根据其键的自然顺序排序的空排序映射。
    2. 具有Comparator类型的单个参数的构造函数,它创建根据指定的比较器排序的空的排序映射。
    3. 一个具有类型为Map的单个参数的构造函数,它创建一个与其参数具有相同键值映射的新映射,根据密钥的自然排序进行排序。
    4. 一个具有类型为SortedMap的单个参数的构造函数,它创建一个具有相同键值映射和与输入排序映射相同顺序的新的排序映射。

    注意 :几个方法返回带有限制键范围的子图。 这种范围是半开放的 ,也就是说,它们包括其低端点,但不包括其高端点(如适用)。 如果您需要一个封闭的范围 (包括两个端点),并且键类型允许计算给定键的后继,只需要从lowEndpointsuccessor(highEndpoint)的子范围。 例如,假设m是其键是字符串的地图。 以下成语获得包含m中所有键值映射的m其关键在lowhigh之间,包括:

      SortedMap<String, V> sub = m.subMap(low, high+"\0"); 
    可以使用类似的技术来生成开放范围 (其不包含端点)。 以下成语获得包含m中所有键值映射的m其关键在lowhigh之间,独占:
      SortedMap<String, V> sub = m.subMap(low+"\0", high); 

    此接口是Java Collections Framework的成员。

    从以下版本开始:
    1.2
    另请参见:
    MapTreeMapSortedSetComparatorComparableCollectionClassCastException
    • 方法详细信息

      • comparator

        Comparator<? super K> comparator​()
        返回用于为了在这个映射中的键,或比较null如果此映射使用natural ordering它的键。
        结果
        比较器用于订购该地图中的按键,或 null如果该地图使用其键的自然排序
      • subMap

        SortedMap<K,V> subMap​(K fromKey,
                              K toKey)
        返回此地图部分的视图,其关键字范围从fromKey (含)到toKey ,独占。 (如果fromKeytoKey相等,则返回的地图为空。)返回的地图由该地图支持,因此返回的地图中的更改将反映在该地图中,反之亦然。 返回的地图支持该地图支持的所有可选地图操作。

        返回的地图将抛出一个IllegalArgumentException ,试图在其范围之外插入一个键。

        参数
        fromKey - 返回地图中键的低端点(含)
        toKey - 返回地图中的键的高端点(独占)
        结果
        该地图的部分视图,其键的范围从 fromKey (含)到 toKey ,独占
        异常
        ClassCastException - 如果fromKeytoKey不能使用该地图的比较器相互比较(或者,如果地图没有比较器,则使用自然排序)。 如果fromKeytoKey无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
        NullPointerException - 如果 fromKeytoKey为空,并且此映射不允许空键
        IllegalArgumentException - 如果fromKey大于toKey ; 或者如果该地图本身具有限制范围,并且fromKeytoKey位于范围的界限之外
      • headMap

        SortedMap<K,V> headMap​(K toKey)
        返回该地图的部分密钥严格小于toKey 返回的地图由此地图支持,因此返回的地图中的更改将反映在该地图中,反之亦然。 返回的地图支持该地图支持的所有可选地图操作。

        返回的地图将抛出一个IllegalArgumentException ,试图在其范围之外插入一个键。

        参数
        toKey - 返回地图中的键的高端点(独占)
        结果
        该地图的部分密钥严格小于 toKey
        异常
        ClassCastException - 如果toKey与此映射的比较器不兼容(或者,如果映射没有比较器,如果toKey不实现Comparable )。 如果toKey无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
        NullPointerException - 如果 toKey为空,并且此映射不允许空值
        IllegalArgumentException - 如果该地图本身有限制范围,并且 toKey位于范围界限之外
      • tailMap

        SortedMap<K,V> tailMap​(K fromKey)
        返回此地图部分的视图,其键大于或等于fromKey 返回的地图由此地图支持,因此返回的地图中的更改将反映在该地图中,反之亦然。 返回的地图支持该地图支持的所有可选地图操作。

        返回的地图将会IllegalArgumentException一个IllegalArgumentException ,试图在其范围之外插入一个键。

        参数
        fromKey - 返回地图中的键的低端点(含)
        结果
        该地图的部分的视图,其键大于或等于 fromKey
        异常
        ClassCastException - 如果fromKey与此映射的比较器不兼容(或者,如果映射没有比较器,如果fromKey不实现Comparable )。 如果fromKey无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
        NullPointerException - 如果 fromKey为空,并且此映射不允许空值
        IllegalArgumentException - 如果该地图本身有限制范围,并且 fromKey位于范围界限之外
      • firstKey

        K firstKey​()
        返回此地图中当前的第一个(最低)键。
        结果
        当前在此地图中的第一(最低)键
        异常
        NoSuchElementException - 如果这张地图是空的
      • lastKey

        K lastKey​()
        返回当前在此地图中的最后(最高)键。
        结果
        当前在此地图中的最后(最高)键
        异常
        NoSuchElementException - 如果此地图为空
      • keySet

        Set<K> keySet​()
        返回此地图中包含的键的Set视图。 该集合的迭代器按升序返回密钥。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAll ,和clear操作。 它不支持addaddAll操作。
        Specified by:
        keySet在接口 Map<K,V>
        结果
        该地图中包含的键的设置视图,按升序排列
      • values

        Collection<V> values​()
        返回此地图中包含的值的Collection视图。 集合的迭代器按照相应键的升序返回值。 集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该collection支持元素移除,即从映射中相应的映射,经由Iterator.removeCollection.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。
        Specified by:
        values在接口 Map<K,V>
        结果
        该地图中包含的值的集合视图,按升序排序
      • entrySet

        Set<Map.Entry<K,V>> entrySet​()
        返回此地图中包含的映射的Set视图。 集合的迭代器按升序键顺序返回条目。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove操作,或者通过迭代器返回的映射条目上的setValue操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。
        Specified by:
        entrySet在接口 Map<K,V>
        结果
        该地图中包含的映射的集合视图,按升序排序