gpt4 book ai didi

Java 反转映射

转载 作者:IT老高 更新时间:2023-10-28 21:17:46 25 4
gpt4 key购买 nike

我需要创建逆映射 - 选择唯一值并为它们找到键。似乎唯一的方法是迭代所有键/​​值对,因为 entrySet 返回一组 所以值不是唯一的?

最佳答案

map 中的值可能不是唯一的。但如果它们是(在你的情况下)你可以按照你在问题中写的那样做,并创建一个通用方法来转换它:

private static <V, K> Map<V, K> invert(Map<K, V> map) {

Map<V, K> inv = new HashMap<V, K>();

for (Entry<K, V> entry : map.entrySet())
inv.put(entry.getValue(), entry.getKey());

return inv;
}

Java 8:

public static <V, K> Map<V, K> invert(Map<K, V> map) {
return map.entrySet()
.stream()
.collect(Collectors.toMap(Entry::getValue, Entry::getKey));
}

使用示例:

public static void main(String[] args) {

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

map.put("Hello", 0);
map.put("World!", 1);

Map<Integer, String> inv = invert(map);

System.out.println(inv); // outputs something like "{0=Hello, 1=World!}"
}

旁注:put(.., ..) 方法将返回键的“旧”值。如果它不为空,您可能会抛出 new IllegalArgumentException("Map values must be unique") 或类似的东西。

关于Java 反转映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146990/

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