当前位置: 首页 > 知识库问答 >
问题:

如何从LinkedHashMap获取具有“最佳”值的密钥

潘俊楚
2023-03-14

我有一个问题:我的HashMap看起来像:

[1,2,3,4] , 5
[1,3,3,4] , 2
[1,2,5,4] , -1
[1,2,4,4] , -1

我想对这个hashmap进行排序,结果成功了!返回LinkedHashMap。我想要的是得到最好的‘价值’的钥匙。最好的'values'是最小的数字,在本例中为-1。是否可以在int[][]中返回键[1,2,5,4]和[1,2,4,4]?例如,如果最佳值是3,它出现了5次,它应该把5个键还给我。仅等于一个最佳值。我怎么能那么做?

 HashMap<int[], Double> hashMap = new HashMap<int[], Double>();
 value = sortHashMap(hashMap);

int[][] bestKey;
// bestkey = value.getTheKeysWithTheBestValue // how could I do that?  :(
// bestKey should be 
// [ [1,2,5,4], [1,2,4,4] ]

    private LinkedHashMap<int[], Double> sortHashMap(HashMap<int[], Double> hashMap) {
        List<Entry<int[], Double>> list = new ArrayList<>(hashMap.entrySet());
        list.sort(Entry.comparingByValue());
        return list.stream().collect(Collectors.toMap(Entry::getKey, Entry::getValue,
                (key1, key2) -> key2, LinkedHashMap::new));
    }

共有1个答案

胡高寒
2023-03-14

大意:

  • 遍历列表
  • 如果当前值为“Better”,则将该值另存为“Best”,并将该值的键存储在数组列表“Best Keys”中
  • 如果当前值为“更差”,则继续下一个
  • 如果当前值等于当前“最佳”,则将密钥追加到“最佳密钥”列表
 类似资料:
  • 我使用的函数返回LinkedHashMap中的键值对。 注意:我无法将LinkedHashMap更改为代码中的任何其他映射,因为该函数正在其他几个函数中使用。 我也在谷歌上搜索并尝试使用TreeMap,它以升序给出我们想要的结果。但是,在树映射中,键是按升序排列的,而不是值。 我的要求主要是价值观。 如何按升序获取值。 提前谢谢!!!!

  • 问题内容: 我尝试在执行以下命令后获得具有最高/最低编号的行: 这是我的测试数据 为了获得最低的价值,我将使用 现在,id是,但应该是。 我也尝试了加入: 如何根据最低的结果为每个结果获取正确的ID ? 问题答案: 我认为这是您要实现的目标: 输出: ID 价值 姓名 1个 10 第1行 4 5 第2行 在这里,我使用minVal和Name自联接了表。

  • 问题内容: 桌子: 我想获取UserId,每个UserId的max(Date)值。即,具有最新日期的每个UserId的值。有没有一种方法可以简单地在SQL中做到这一点?(最好是Oracle) 更新: 对于任何歧义,我们深表歉意:我需要获取所有UserIds。但是对于每个UserId,仅该用户具有最新日期的那一行。 问题答案: 这将检索其my_date列值等于该用户ID的my_date最大值的所有行

  • 问题内容: 我有 我想按 位置 获得 职位, 而不是关键 职位 。 我不想使用迭代。 还有其他方法可以基于索引获取Value吗? 问题答案: 您无法获得基于索引的值,只是那样行不通。一种解决方法是根据您的值创建一个新列表,然后根据索引获取值。

  • 问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过