java - 如何修复在 Java 中使用重复值获取 Key By Value
问题描述
我想通过地图中的重复值来获取密钥,但结果不正确,例如我有这个代码
import java.util.*;
import java.util.Map.*;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 10);
map.put("B", 20);
map.put("C", 30);
map.put("D", 10);
map.put("E", 11);
map.put("F", 30);
System.out.println("Before Sorting:");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " - " + entry.getValue());
}
List<Integer> list = new ArrayList<>(map.values());
Collections.sort(list);
Collections.reverse(list);
System.out.println("\nAfter Sorting:");
for (Integer entry : list) {
System.out.println(getKeyByValue(map, entry) + " - " + entry);
}
}
public static <String, Integer> String getKeyByValue(
Map<String, Integer> map, Integer value) {
for (Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue().equals(value)) {
return entry.getKey();
}
}
return null;
}
}
现在输出的结果是
Before Sorting:
A - 10
B - 20
C - 30
D - 10
E - 11
F - 30
After Sorting:
C - 30
C - 30
B - 20
E - 11
A - 10
A - 10
目标是按降序对值进行排序,然后从值中获取键,但由于存在重复值,我无法获取键
After Sorting should be:
F - 30
C - 30
B - 20
E - 11
D - 10
A - 10
有什么建议吗?
解决方案
推荐阅读
- python - 为什么我的按钮没有与 python TKinter 正确对齐
- java - 解决apache tomcat中的apache tomcat 500内部服务错误?
- javascript - 每秒更改 wix 文本框元素的颜色
- r - 如何将边缘/边框添加到 geom_link2 ?- 跟进问题
- r - 在 sprintf 中使用百分号 (%)
- javascript - 如何使用 javascript 取消注册/取消绑定 Material ui 中的事件
- angular - Angular Services:我应该在组件中复制服务属性吗?
- json - 如何拆分包含 JSON 的 txt 文件?
- c++ - 通过多线程 C++ GTKMM 运行 UI,每 5 秒获取一次传感器信息
- java - 如何在 Firebase 中的子项中添加值子项?