在Java中如何将Map的键和值互换

答案:Java中Map键值互换需考虑值唯一性,若值唯一可用HashMap直接对调;若值重复则用List集合存储多个键,或使用Stream API的groupingBy按值分组,保留所有键信息。

在java中如何将map的键和值互换

在Java中,将Map的键和值互换意味着原来作为键的内容变成值,原来的值变成新的键。由于Map中的键必须唯一,而原Map的值可能不唯一,因此直接互换存在限制。下面介绍几种常见处理方式。

1. 使用HashMap进行简单互换(值唯一时)

如果确定原Map的所有值都是唯一的,可以直接创建一个新的Map,把原Map的entry中的key和value对调。

示例代码:

Map originalMap = new HashMap();
originalMap.put(“a”, 1);
originalMap.put(“b”, 2);

Map swappedMap = new HashMap();
for (Map.Entry entry : originalMap.entrySet()) {
  swappedMap.put(entry.getValue(), entry.getKey());
}

此时,1 → “a”2 → “b”,完成互换。

2. 处理值重复的情况(一个值对应多个键)

当原Map中有多个键对应相同值时,直接使用HashMap会丢失数据(后put的会覆盖前面的)。为避免丢失,可将新Map的值设为集合类型,如List。

立即学习“Java免费学习笔记(深入)”;

示例代码:

Map originalMap = new HashMap();
originalMap.put(“a”, 1);
originalMap.put(“b”, 1);
originalMap.put(“c”, 2);

Map<Integer, List> swappedMap = new HashMap();
for (Map.Entry entry : originalMap.entrySet()) {
  swappedMap.computeIfAbsent(entry.getValue(), k -> new ArrayList()).add(entry.getKey());
}

结果:1 → [“a”, “b”]2 → [“c”],所有信息都被保留。

3. 使用Stream API(Java 8+)

可以用Stream更简洁地实现互换,尤其是配合groupingBy处理重复值。

示例代码:

Map<Integer, List> swapped = originalMap.entrySet().stream()
  .collect(Collectors.groupingBy(
    Map.Entry::getValue,
    Collectors.mapping(Map.Entry::getKey, Collectors.toList())
  ));

这种方式逻辑清晰,适合函数式编程风格。

基本上就这些方法。选择哪种取决于你的数据是否允许重复值以及你希望如何组织结果。如果值唯一,直接互换即可;如果有重复,建议用List或Set来聚合原键。

以上就是在Java中如何将Map的键和值互换的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/199573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月1日 20:26:02
下一篇 2025年11月1日 20:27:00

相关推荐

发表回复

登录后才能评论
关注微信