gpt4 book ai didi

java - 根据数字键的顺序在 map 中排序

转载 作者:行者123 更新时间:2023-11-29 04:39:59 25 4
gpt4 key购买 nike

我有一个 Map<String,Map<Integer,String>>

这张 map 中的示例数据

("aa" , ((3, "xx"),(5, "yy"),(1,"zz")))

("bb" , (5, "zz"))

这里内部映射的整数键介于 1 到 5 之间。它基本上是一个优先级数

现在我需要获取某个键的值(例如 aa )。它应该从具有最高优先级数字(键)的内部映射中返回值。

在上面的例子中,yy应该归还。

注意:在 map 中插入数据的顺序与内部 map 键的顺序无关。

我该怎么办-

  • 在填充 map 数据时使用基于键排序的内部 map ?
  • 遍历具有最高优先级值(在本例中为 5)到最低(在本例中为 1)的 map ?
  • 将内部映射按键的升序排序并获取最后一个值?

最佳答案

选项 2 和 3 效率较低,因为每次轮询值时都必须排序/迭代。

您可以使用 TreeMap 实现选项 #1并且所有排序都将在添加元素时为您处理。然后使用 TreeMap#lastEntry()获取具有最高键值的条目。

使用一些 Java 8 特性:

Map<String,TreeMap<Integer,String>> outerMap = new HashMap<>();

public void insert(String outerKey, Integer innerKey, String innerValue) {
outerMap.computeIfAbsent(outerKey, k -> new TreeMap<>())
.put(innerKey, innerValue);
}

public String pollHighest(String outerKey) {
return Optional.of(outerKey)
.map(outerMap::get)
.map(TreeMap::lastEntry)
.map(Map.Entry::getValue)
.orElse(null);
}

关于java - 根据数字键的顺序在 map 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599896/

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