模块  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>
    Map进一步提供其密钥的总排序 该地图是根据有序natural ordering其密钥,或通过Comparator通常在有序映射创建时提供。 遍历有序映射的集合视图(由返回时,这个顺序反映entrySetkeySetvalues方法)。 提供了几个额外的操作以利用订购。 (此界面是SortedSet的地图模拟。)

    插入到有序映射中的所有键必须实现Comparable接口(或由指定的比较器接受)。 此外,所有此类密钥必须是可互相比较的k1.compareTo(k2) (或comparator.compare(k1, k2) )不得为有序映射中的任何键k1k2抛出ClassCastException 尝试违反此限制将导致违规方法或构造函数调用抛出ClassCastException

    请注意,如果有序映射要正确实现Map接口,则由有序映射维护的排序(无论是否提供显式比较器)必须与equals一致 (有关与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中的所有键值映射,其键位于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 )到toKey (独占)。 (如果fromKeytoKey相等,则返回的地图为空。)返回的地图由此地图支持,因此返回的地图中的更改将反映在此地图中,反之亦然。 返回的地图支持此地图支持的所有可选地图操作。

        返回的地图将尝试在其范围之外插入密钥时抛出IllegalArgumentException

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

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

        返回的地图将尝试在其范围之外插入密钥时抛出IllegalArgumentException

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

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

        返回的地图将尝试在其范围之外插入密钥时抛出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视图。 set的迭代器按升序返回键。 该集由地图支持,因此对地图的更改将反映在集中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAll ,和clear操作。 它不支持addaddAll操作。
        Specified by:
        keySet在界面 Map<K,​V>
        结果
        此映射中包含的键的set视图,按升序排序
      • 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视图。 set的迭代器以升序键顺序返回条目。 该集由地图支持,因此对地图的更改将反映在集中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作,或者通过迭代器返回的映射条目上的setValue操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。
        Specified by:
        entrySet在界面 Map<K,​V>
        结果
        此映射中包含的映射的set视图,按升序键顺序排序