有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我如何在HashMap中只找到某些实体的最高值,而不是整个HashMap?

我有一个类型(String,Double)的HashMap(称为QTable),我想创建一个方法,给定某个字符串键,该方法将返回HashMap中2-4个其他条目的最大Double值

这些条目看起来像<;“Q04”,0.0>;例如

在给定键“Q04”的情况下,我希望该方法返回带有键“Q40”、“Q43”和;“Q45”我想这将是一个大致如下的故事:

if (if x == QTable.get("Q04")) {
        return QTable.get.maxValue("Q40", "Q43", "Q45") }

非必要的背景信息:我试图编写贝尔曼方程来填写Q表,这一步将用于在到达新状态时找到潜在移动的最大Q值


共 (2) 个答案

  1. # 1 楼答案

            final Map<String, Double> hashMap = new HashMap<>();
            hashMap.put("Q40", 1.0);
            hashMap.put("Q41", 3.0);
            hashMap.put("Q49", 2.0);
            hashMap.put("Q50", 20.0);
    
            Stream.of("Q40", "Q41", "Q49")
                    .map(hashMap::get)
                    .max(Comparator.comparing(Double::valueOf))
                    .ifPresent(d -> System.out.println("The highest value is: " + d));
    

    更新了一个更精简的版本。在这里,我创建了一个密钥流,我想从中提取密钥的最高值。我从hashMap变量中以Double的形式检索该值,然后使用max()运算符返回Optional结果

  2. # 2 楼答案

    比如:

    Double max = Stream.of("Q40", "Q43", "Q45")
                 .map(hashMap::get)
                 .mapToDouble(value -> value)
                 .max()
                 .getAsDouble();