有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中递归交换嵌套映射的键和值的算法

如何在Java中编写一个接收嵌套映射并交换键及其值的递归方法。但由于它是一个嵌套映射,一个键或一个值也可以是一个映射,如果是这样的话,它也应该被交换。到目前为止,我只知道:

public class MyRekursion {
    public static <K, V> HashMap<V, K> deepReverseMap(Map<K, V> nestedMap) {
        HashMap<V, K> rev = new HashMap<V, K>();

        for (Map.Entry<K, V> entry : nestedMap.entrySet()){
            K key = entry.getKey();
            V val = entry.getValue();
            if (key instanceof Map){
                // ???
                // key = (K)deepReverseMap((Map<K, V>)key);
            }
            if (val instanceof Map){
                // ???
                // val = (V)deepReverseMap((Map<K, V>)val);
            }
            rev.put(val, key);
        }

    return rev;
    }
}

将deepReverseMap()的返回值强制转换为K或V可能是错误的。我怎样才能正确地写出这个方法


共 (1) 个答案

  1. # 1 楼答案

    在Java中没有类型安全的方法,您需要使用未经检查的强制转换:

    if (key instanceof Map){
        key = (K) deepReverseMap((Map<?, ?>)key);
    }
    if (val instanceof Map){
        val = (V) deepReverseMap((Map<?, ?>)val);
    }