繁体   English   中英

如何获得排序的哈希图中两个给定键之间的所有键值?

[英]How to get all the key-values underlying between two given keys in a sorted hashmap?

我有一个以时间为键的HashMap。 我对HashMap进行了排序。 现在,我想获取两个键之间的所有键值,即时间值。

这是一些示例代码。 TreeMap实现了NavigableMap接口,因此请确保将其用作变量类型,以利用TreeMap的全部功能:

NavigableMap<Integer, String> map = new TreeMap<>();
// code to fill my map with values from 1 to 20, key=int, value=String.valueOf(int)
IntStream.rangeClosed(1,20).forEach(i->map.put(i, String.valueOf(i)));

NavigableMap有一个方法.subMap(start, end)和一个重载.subMap(start, startInclusive, end, endInclusive)用于选择地图的局部视图,听起来这就是您所需要的。

NavigableMap<Integer, String> subMap = map.subMap(5, false, 10, false);

这是我之前创建的地图的实时视图,但仅包含键5和10之间的映射(互斥)。 让我们检查一下它是否按预期工作:

subMap.forEach(
    (k, v) -> System.out.printf("Key: %d, value: '%s'%n", k, v)
);

输出:

键:6,值:“ 6”
键:7,值:“ 7”
键:8,值:“ 8”
键:9,值:“ 9”

如您所见,地图保持排序,但仅限于指定范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM