Java.util.TreeMap 类

java.util.TreeMap.subMap() 方法返回此映射的部分视图,其键范围为 fromKey到键。如果 fromKey 和 toKey 相等,则返回的映射为空,除非 fromInclusive 和 toInclusive 都为 true。返回的映射由此映射支持,因此返回的映射中的更改会反映在此映射中,反之亦然。返回的映射支持该映射支持的所有可选映射操作。

语法

public NavigableMap<K,V> subMap(K fromKey,
                                boolean fromInclusive,
                                K toKey,
                                boolean toInclusive)

这里,K和V分别是容器维护的键和值的类型。

参数

fromKey 指定返回映射中键的低端点。
fromInclusive 如果低端点包含在返回的视图中,则指定 true。
toKey 指定返回映射中键的高端点。
toInclusive 如果要在返回的视图中包含高端端点,则指定 true。

返回值

返回此映射的部分视图,其键范围从 fromKey 到 toKey。

异常

  • 抛出 ClassCastException,如果 fromKey 和toKey 无法使用此映射的比较器进行相互比较(或者,如果映射没有比较器,则使用自然排序)。
  • 如果 fromKey 或 toKey 为 null 并且则抛出 NullPointerException。此映射使用自然排序,或其比较器不允许 null 键。
  • 如果 fromKey 大于 toKey,则抛出 IllegalArgumentException;或者如果此map本身有一个受限范围,并且 fromKey 或 toKey 位于范围之外。

示例:

在下面的示例中,java.util.TreeMap.subMap() 方法返回包含指定值范围内的键的给定映射部分的视图。

import java.util.*;

public class MyClass {
  public static void main(String[] args) {
    //创建树形图
    TreeMap<Integer, String> Map1 = new TreeMap<Integer, String>();

    //填充Map1
    Map1.put(102, "John");
    Map1.put(103, "Marry");
    Map1.put(101, "Kim");
    Map1.put(104, "Jo");
    Map1.put(105, "Sam");

    //打印Map1
    System.out.println("Map1 contains: " + Map1); 

    //创建包含给定范围内的键的子图
    NavigableMap<Integer, String> Map2 = new TreeMap<Integer, String>();
    Map2 = Map1.subMap(102, true, 104, true); 

    //打印Map2
    System.out.println("Map2 contains: " + Map2);     
  }
}

输出上面的代码将是:

Map1 contains: {101=Kim, 102=John, 103=Marry, 104=Jo, 105=Sam}
Map2 contains: {102=John, 103=Marry, 104=Jo}