马士兵java架构师

您现在的位置是:java学习笔记 >

java学习笔记

[代码] 从Java中的Map获取子Map的3中方法

2023-11-10 14:34:13java学习笔记 本文浏览次数:1 百度已收录

本 文 目 录

1、从Java中的Map获取子Map的方法

以下是可以从Java的Map中获取子Map的方法,这些方法都属于java.util.NavigableMap接口。值得注意的是,HashMap并不直接支持这些方法,但TreeMapConcurrentSkipListMap等实现了NavigableMap接口的类可以使用这些方法。

方法名 参数 描述
subMap(K fromKey, K toKey) 两个参数分别表示子Map的键的范围,均为包含性边界。 返回此映射的部分视图,其键的范围在fromKey(包括)和toKey(包括)之间。
headMap(K toKey) 一个参数,表示子Map的最大键,不包含该键。 返回此映射的部分视图,其键严格小于toKey。
tailMap(K fromKey) 一个参数,表示子Map的最小键,包含该键。 返回此映射的部分视图,其键大于等于fromKey。

2、方法的具体使用和代码展示

subMap(K fromKey, K toKey)

NavigableMap<Integer, String> map = new TreeMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(4, "d");
map.put(5, "e");

NavigableMap<Integer, String> subMap = map.subMap(2, 4);
for (Map.Entry<Integer,String> entry : subMap.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
  1. subMap(K fromKey, K toKey) 总结:这段代码会输出键为2到3的条目,注意这里是左闭右开区间。
  • 创建一个TreeMap实例并向其中添加数据。
  • 调用subMap(K fromKey, K toKey)方法,获取键在指定范围内的子映射。
  • 注意范围是左闭右开,即包括fromKey但不包括toKey。
  • 可以遍历子映射来查看其中包含的数据。

headMap(K toKey)

NavigableMap<Integer, String> map = new TreeMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(4, "d");
map.put(5, "e");

NavigableMap<Integer, String> headMap = map.headMap(3);
for (Map.Entry<Integer,String> entry : headMap.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
  1. headMap(K toKey) 总结:这段代码会输出键小于3的条目。
  • 创建一个TreeMap实例并向其中添加数据。
  • 调用headMap(K toKey)方法,获取键小于指定值的子映射。
  • 通过遍历子映射,可以查看所有小于toKey的键值对。

tailMap(K fromKey)

NavigableMap<Integer, String> map = new TreeMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.put(4, "d");
map.put(5, "e");

NavigableMap<Integer, String> tailMap = map.tailMap(3);
for (Map.Entry<Integer,String> entry : tailMap.entrySet()) {
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
  1. tailMap(K fromKey) 总结:这段代码会输出键大于等于3的条目。
  • 创建一个TreeMap实例并向其中添加数据。
  • 调用tailMap(K fromKey)方法,获取键大于等于指定值的子映射。
  • 通过遍历子映射,可以查看所有大于等于fromKey的键值对。