如何获取排序哈希图中两个给定键之间的所有键值?
How to get all the key-values underlying between two given keys in a sorted hashmap?
我有一个以时间为键的 HashMap。我对 HashMap 进行了排序。
现在我想获取两个键之间的所有键值,即时间值。
这是一些示例代码。 A TreeMap
implements the interface 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)
and an overload .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)
);
输出:
Key: 6, value: '6'
Key: 7, value: '7'
Key: 8, value: '8'
Key: 9, value: '9'
如您所见,地图保持排序,但仅限于指定范围。
我有一个以时间为键的 HashMap。我对 HashMap 进行了排序。 现在我想获取两个键之间的所有键值,即时间值。
这是一些示例代码。 A TreeMap
implements the interface 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)
and an overload .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)
);
输出:
Key: 6, value: '6'
Key: 7, value: '7'
Key: 8, value: '8'
Key: 9, value: '9'
如您所见,地图保持排序,但仅限于指定范围。