gpt4 book ai didi

java - 根据值对 Map 内的 HashMap 进行排序

转载 作者:行者123 更新时间:2023-12-01 18:10:39 24 4
gpt4 key购买 nike


我正在尝试根据字母值对 HashMap 进行排序,该值本身存储在另一个映射中。

结构如下: Map<String, HashMap<String, String>>

我想根据内部 HashMap 的值对这个 Map 进行排序,这样整个 Map 都会根据 HashMap 的值进行排序,就像 HashMap 一样。

--更新:

例如,如果我有类似的东西:

Map: abc Value: HashMap[EN, a]
Map: xyz Value: HashMap[DE, c]
Map: pqr Value: HashMap[PL, b]

排序后应该是这样的:

Map: abc Value: HashMap[EN, a]
Map: pqr Value: HashMap[PL, b]
Map: xyz Value: HashMap[DE, c]

如何进行?

最佳答案

对值进行排序可能是一个坏主意,因为如果您更改值映射中的内容,它会认为排序会变得不正确。

如果你确实想根据值排序,那么你需要创建另一个 map :

final Map<String, Map<String, String>> map= new HashMap<>();

Map<String, String> map1 = new HashMap<>();
map1.put("EN", "a");
Map<String, String> map2 = new HashMap<>();
map2.put("DE", "c");
Map<String, String> map3 = new HashMap<>();
map3.put("PL", "b");

map.put("abc", map1);
map.put("xyz", map2);
map.put("pqr", map3);

TreeMap<String, Map<String, String>> sorted = new TreeMap<>(new Comparator<String>() {

@Override public int compare(String s1, String s2) {
String value1 = map.get(s1).values().iterator().next();
String value2 = map.get(s2).values().iterator().next();

return value1.compareTo(value2);
}
});
sorted.putAll(map);

for(Map.Entry<String, Map<String, String>> e : sorted.entrySet()) {
System.out.println(e.getKey());
}

关于java - 根据值对 Map 内的 HashMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33275195/

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