java - HashMap 交换键值,反之亦然

标签 java hashmap

<分区>

这是一个入门问题,我想用 HashMap 交换键和值,反之亦然。到目前为止,这是我尝试过的方法。

import java.util.HashMap;
import java.util.Map;

class Swap{
    public static void main(String args[]){

        HashMap<Integer, String> s = new HashMap<Integer, String>();

        s.put(4, "Value1");
        s.put(5, "Value2");

        for(Map.Entry en:s.entrySet()){
            System.out.println(en.getKey() + " " + en.getValue());
        }
    }
}

最佳答案

您需要一个新的 Map,因为示例中的键和值具有不同的类型。

在 Java 8 中,这可以通过创建原始 Map 条目的 Stream 并使用 toMap 来轻松完成>Collector 生成新的 Map :

Map<String,Integer> newMap = 
    s.entrySet().stream()
                .collect(Collectors.toMap(Map.Entry::getValue,Map.Entry::getKey));

关于java - HashMap 交换键值,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38589875/

相关文章:

java - 我应该使用 null 返回值、检查异常或可能的 null 对象模式来设计以下 API

java - 在android中解析JSON字符串

java - 删除多对一关系不会持久

java - 如何存储用于构建键值组合的 Java 常量

encryption - 在键值存储中查找加密 key

java - 引号有问题

java - 在 Java 中获取 List 中的泛型类型

java - HashMap 更新未反射(reflect)在线程之间

java - 并发 hashmap 不需要同步的 getters/setters 吗?

android 的 SparseIntArray 会自动自动装箱键