如何在嵌套集合中添加内部映射?

时间:2009-02-10 05:15:41

标签: java collections map nested

假设:

Object nestKey;
Object nestedKey;
Object nestedValue;

Map<T,Map<T,T>> nest;
Map<T,T> nested;  

如何将映射添加到嵌套的位置:

  

nest.containsKey(nestKey)== true;

或者现有的馆藏库会更有效吗?

4 个答案:

答案 0 :(得分:1)

这是一个相当普遍的习惯用语:

  • 按照您的建议制作地图地图
  • 有一个地图,你的键组合了“主”键和“子键”(可能更有效地利用空间,但如果你需要迭代键和子键,通常不太合适)

答案 1 :(得分:1)

您的意思是以下泛型方法

static <U,V,W> W putNestedEntry(
        Map<U,Map<V,W>> nest,
        U nestKey,
        V nestedKey,
        W nestedValue)
{
    Map<V,W> nested = nest.get(nestKey);

    if (nested == null)
    {
        nested = new HashMap<V,W>();
        nest.put(nestKey, nested);
    }

    return nested.put(nestedKey, nestedValue);        
}

答案 2 :(得分:0)

不确定你的意思。我想你想要添加到嵌套地图,如下所示:

nest.get(nestKey).put(nestedKey, nestedValue);

这是不可能的,因为外部地图上的get会返回Map<?, ?>类型的地图。你不能在它上面调用put方法。无界的通配符'?'如果您不知道Collection的内容类型但想要将它们视为对象,则应该使用它。如果要读取和修改内容,并且Map具有异构对象,则可以使用原始类型。这就像是:

Map<?, Map> nest;

最好的方法当然是(如果可能的话),使用同类Map并指定其类型。例如。 Map<String, String>

答案 3 :(得分:0)

试试这个

if(nest.containsKey(nestKey)){  ((Map)nest.get(nestKey))。put(nestedKey,nestedValue); }