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

Java 如何在嵌套集合中添加内部映射?,java,collections,map,nested,Java,Collections,Map,Nested,鉴于: 对象嵌套键; 对象嵌套键; 对象嵌套值; 地图巢; 地图嵌套; 如何将映射添加到嵌套中,其中: nest.containsKey(nestKey)==true ? 或者有没有更有效的现有藏书库?不知道你的意思。我认为您希望添加到嵌套贴图,如下所示: Object nestKey; Object nestedKey; Object nestedValue; Map<T,Map<T,T>> nest; Map<T,T> nested; 这是不可能

鉴于:

对象嵌套键;
对象嵌套键;
对象嵌套值;
地图巢;
地图嵌套;
如何将映射添加到嵌套中,其中:

nest.containsKey(nestKey)==true

?


或者有没有更有效的现有藏书库?

不知道你的意思。我认为您希望添加到嵌套贴图,如下所示:

Object nestKey;
Object nestedKey;
Object nestedValue;

Map<T,Map<T,T>> nest;
Map<T,T> nested;  
这是不可能的,因为get-on-outer映射返回类型为
map
的映射。不能对其调用put方法。如果不知道集合内容的类型,但要将它们视为对象,则应该使用无界通配符“?”。如果要读取和修改内容,并且地图具有异构对象,则可以使用raw类型。这有点像:

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

Map这是一个相当常见的习惯用法:

  • 按照你的建议做一张地图
  • 有一个映射,其中键组合“主”键和“子键”(可能更有效地利用空间,但如果需要迭代键和子键,通常不太合适)
试试这个

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

你是指类似以下通用方法的东西吗

static W putNestedEntry(
地图巢穴,
U nestKey,
V nestedKey,
W嵌套值)
{
Map nested=nest.get(nestKey);
if(嵌套==null)
{
嵌套=新HashMap();
nest.put(nestKey,嵌套);
}
返回nested.put(nestedKey,nestedValue);
}

组合键和子键,就像在SQL中使用多个键来创建主键一样,但是使用串联来完成?您对我的意思的解释是正确的。我的意思是让它是泛型的,我将把它改为使用泛型作为类型。我试图通过设置nest.get(nestKey)嵌套来作弊。我准备做的就是犯一个愚蠢的错误。谢谢你的现实检查。
Map<?, Map> nest;
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);        
}