如何查找嵌套hashmap中最小deadline值对应的上层count键
实现思路
遍历外层哈希表的所有<count, 内层对象>键值对,逐次比对内层的deadline数值,全程维护当前最小deadline对应的count值,遍历完成后即可得到目标结果。
注意:如果存在多个count对应相同的最小deadline,下述默认实现返回最先遍历到的count值。如果需要返回所有符合条件的count,可将存储结果的变量改为列表,遇到deadline等于当前最小值时追加count即可。
各语言实现示例
Python
# 示例数据 data = {0: {"req": 5}, 1: {"req": 3}, 2: {"req": 1}, 3: {"req": 3}} # 极简实现:按内层req值排序后取首个元素的键 min_count = min(data.items(), key=lambda item: item[1]["req"])[0] print(min_count) # 输出结果为2
JavaScript
// 示例数据 const data = {0: {req: 5}, 1: {req: 3}, 2: {req: 1}, 3: {req: 3}} let minDeadline = Infinity let minCount = null for (const count in data) { const currentDeadline = data[count].req if (currentDeadline < minDeadline) { minDeadline = currentDeadline minCount = Number(count) // 不需要数字类型可直接赋值count } } console.log(minCount) // 输出结果为2
Java
import java.util.HashMap; import java.util.Map; public class FindMinCount { public static void main(String[] args) { // 示例数据 Map<Integer, Map<String, Integer>> data = new HashMap<>(); data.put(0, Map.of("req", 5)); data.put(1, Map.of("req", 3)); data.put(2, Map.of("req", 1)); data.put(3, Map.of("req", 3)); int minDeadline = Integer.MAX_VALUE; int minCount = -1; for (Map.Entry<Integer, Map<String, Integer>> entry : data.entrySet()) { int currentDeadline = entry.getValue().get("req"); if (currentDeadline < minDeadline) { minDeadline = currentDeadline; minCount = entry.getKey(); } } System.out.println(minCount); // 输出结果为2 } }
内容的提问来源于stack exchange,提问作者Godogo
相关产品推荐
相关产品推荐

