java - 如何获取排序 HashMap 中两个给定键之间的所有键值?

标签 java hashmap hashtable treemap

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

最佳答案

这是一些示例代码。一个TreeMap实现接口(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)和过载.subMap(start, startInclusive, end, endInclusive)用于选择 map 的部分 View ,听起来这就是您所需要的。

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

这是我之前创建的 map 的实时 View ,但它仅包含键 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'

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

关于java - 如何获取排序 HashMap 中两个给定键之间的所有键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366805/

相关文章:

java - ConcurrentHashMap 实现在删除操作中是否使用克隆?

ruby - 在 Ruby 中设置哈希值等于另一个哈希值

java - 如何为以下内容实现哈希

java - 解析推送通知安装错误

java - 在 Java 中从 "2d array"检索值时出现问题

java - java中数据结构的内部实现?

android - 对 HashMap 列表进行排序

c++ - 什么是 2 遍和 1 遍哈希表

java - Spring Security Token认证 如何认证?

java - 使 TableViewer 列自动采用其最长字段的宽度