使用值交换键,反之亦然HashMap

Hit*_*sro 1 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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 6

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

在Java 8中,通过创建Stream原始条目Map并使用a toMap Collector生成新条目,可以非常轻松地完成此操作Map:

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