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);
}