gpt4 book ai didi

java - 从 Java 中的多重映射中选择最高的 10 个键值

转载 作者:行者123 更新时间:2023-12-02 12:02:13 25 4
gpt4 key购买 nike

我有一个整数的多重映射和字符串[]列表。这里我需要根据key获取multimap的最高10个值。

我正在尝试以类似的方式实现它,如果键和值如下所示,

   Key   Value
3 [0,0],[1,0],[0,1]
6 [0,1],[1,1],[0,0]
1 [1,0],[1,1],[0,1],[0,0]
2 [1,1],[0,0]

现在我必须根据键获取最高的 10 个值。

由于第一个最高的键是6,所以它必须获取6的所有值 --> ([0,1],[1,1],[0,0])

接下来获取下一个最高键 3 的剩余值 --> ([0,0],[1,0],[0,1])

接下来获取下一个最高键 2 的剩余值 --> ([1,1],[0,0])

接下来获取下一个最高键 1 的剩余值,即 --> ([1,0],[1,1])。

由于我只需要 10 个值,因此我只需从键 1 中选择 2 个值,因为 (3 个值[来自键 6] + 3 个值[来自键 3] + 2 个值[来自键 2] + 2 个值来自key 1) 总共 10 个值。

这是我的代码:

Map<Integer, List<String[]>> outdoorElements = new HashMap<Integer, List<String[]>>();
putObjects(outdoorElements,EvaluationCount,schedules);

private static void putObjects (Map<Integer, List<String[]>> outdoorElements, Integer key, String[] value) {
List<String[]> myClassList = outdoorElements.get(key);
if(myClassList == null) {
myClassList = new ArrayList<String[]>();
outdoorElements.put(key, myClassList);
}
myClassList.add(value);
}

我正在努力如何获取这些值。如果有人能指导我完成此操作,我真的很感激。

最佳答案

创建树形图并将比较器设置为相反顺序。创建一个空列表循环遍历 TreeMap 中的每个值,并添加一个检查来检查该列表(您创建的空列表)的大小是否小于 10,如果是,则将值添加到列表中。

      Map<Integer, List<String>> map = new TreeMap<>(Comparator.reverseOrder());
map.put(1, Arrays.asList("1", "2", "3"));
map.put(10, Arrays.asList("4", "5", "6", "7"));
map.put(5, Arrays.asList("8", "9"));
map.put(110, Arrays.asList("10", "11", "12", "13", "14", "15", "16"));
int max = 10;
List<String> tenHighestValue = new ArrayList<>();
map.values().forEach(list -> {
if (tenHighestValue.size() < max) {
list.forEach(str -> {
if (tenHighestValue.size() < max) {
tenHighestValue.add(str);
}
});
}
});
System.out.println(tenHighestValue);

希望有帮助

关于java - 从 Java 中的多重映射中选择最高的 10 个键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47163344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com