gpt4 book ai didi

java - 根据列表值对映射进行排序

转载 作者:行者123 更新时间:2023-12-01 09:33:00 25 4
gpt4 key购买 nike

我有一张如下所示的 map :

Map<String, String> map1 = new HashMap<String, String>();

内容是:

ID_1 -> ID_2
------------
100 -> 10
200 -> 20
300 -> 30

根据 ID_2 的值,我必须查询 oracle 表并获取与每个条目对应的代码值:

ID_1 -> ID_2 -> code
--------------------
100 -> 10 -> 8
200 -> 20 -> 2
300 -> 30 -> 9

然后我必须按代码值升序排序map1,即结果应该是:

200 -> 20
100 -> 10
300 -> 30

我想过用 <ID_1, List<ID_2,code>> 创建一个中间映射如<K,V>然后根据code值进行排序,得到最终的输出。

是否有更短的方法可以做到这一点,例如不使用中间映射?

最佳答案

您尝试下面的代码:我使用 int[] 数组而不是 List

public class Test {

public static void main(String[] args) throws Exception {
Map<String, int[]> map = new HashMap<>();
map.put("100", new int[]{10, 8});
map.put("200", new int[]{20, 2});
map.put("300", new int[]{30, 9});

Map<String, int[]> sortByValue = sortByValue(map);
for (Map.Entry<String, int[]> entry : sortByValue.entrySet()) {
System.out.println(entry.getKey() +" -> "+ entry.getValue()[0]);
}

}

private static Map<String, int[]> sortByValue( Map<String, int[]> map ) {
List<Map.Entry<String, int[]>> list = new LinkedList<>(map.entrySet());
Collections.sort(list, (o1, o2) -> Integer.compare(o1.getValue()[1], o2.getValue()[1]));
Map<String, int[]> result = new LinkedHashMap<>();
for (Map.Entry<String, int[]> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}

这就是结果:

200 -> 20
100 -> 10
300 -> 30

关于java - 根据列表值对映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244975/

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