java - 如何找到 HashMap 键中的下一个最小值?

标签 java java-8 hashmap

我有一个场景,我有一张 map :

BiMap <Integer, String> map; 

和一个跟踪已处理索引的列表。

List<Integer> filled;

在处理时,如果填充列表包含 key ,那么我应该从 map 中找到下一个最小 key ,该 key 已经不在填充列表中。

有人可以告诉我是否有一种简单的方法可以做到这一点而无需进行多次迭代?

for (int i =0 ;i <size; i++) {
    if(map.contiansKey(i)) {
        Integer min = list.contains(i) ? getNextMinFrom(map, filled) : null;
        if min != null ?System.out.println(map.get(min)) : continue;
    }
}

例如:

Filled - 0, 4, 5, 6

Map - (1,dfs) (4,efs) (5,sdfs) 

in the 0 th iteration..  output - dfs (1 is min)
      in 4th iteration ... output shoudl be 4efs (4 is the next min) 
.... 

问题是我无法从列表中删除条目。

最佳答案

使用使用 map 的“KeySet”初始化的TreeSet,并且在将任何键添加到filled时将其从“TreeSet”中删除,结果,TreeSet的第一个元素就是你想要的

关于java - 如何找到 HashMap 键中的下一个最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43647282/

相关文章:

java - 计算地点与用户位置之间的距离Android Studio

java - neo4j 巨大的图形和解决方案

java - 使用自上而下的方法在 Java 中设计 API - 编写 Javadoc 是最好的起点吗?

java - 以一致的速度将物体从 A 点移动到 B 点

java-8 - Java 8 根据最后一个值生成整数流

java - 用于填充 Map 的 Lambda

java - 文件 HashMap <K, V>

Java HashMap 未从键获取值

java - 数组作为局部变量 - 不遵循 Lambda 中的明确赋值规则

hashmap - 如何将一系列数字散列到散列表中的单个位置