gpt4 book ai didi

java - 反向 HashMap

转载 作者:行者123 更新时间:2023-12-01 07:52:20 27 4
gpt4 key购买 nike

我有一个HashMap看起来像:

HashMap<Player, Integer> playerHashMap = new HashMap<>();

玩家是包含姓名、号码、年龄等的对象。

现在我已经对它进行了排序,它看起来像这样:

key    , value
-----------------
Player1, 1
Player2, 2
Player3, 4
Player4, 6

但我想通过值来实现反转这个映射,如下所示:

key    , value
-----------------
Player4, 6
Player3, 4
Player2, 2
Player1, 1

有什么想法吗?

排序方法(按值排序)如下所示:

private static HashMap<Player, Integer> sortByValues(HashMap<Player, Integer> map) { 
List list = new LinkedList(map.entrySet());

Collections.sort(list, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}
});

HashMap<Player, Integer> sortedHashMap = new LinkedHashMap<Player, Integer>();
for (Iterator<?> it = list.iterator(); it.hasNext();) {
Map.Entry<Player, Integer> entry = (Map.Entry<Player, Integer>) it.next();
sortedHashMap.put(entry.getKey(), entry.getValue());
}
return sortedHashMap;
}

最佳答案

您可以使用 java.util.TreeMap 并传递一个比较器来按照您想要的方式对它们进行排序。

但是我仍然想知道为什么你有 Player 作为键和 Integer 作为值?如果您仅使用 Integer 进行排序,那么您可能需要交换键和值,以获得更好的标准使用映射方式。另外,如果您不需要使用散列技术访问对象(也就是说,如果您的集合不会很大,散列会提高性能),请考虑一个简单的列表。

关于java - 反向 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119131/

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