我无法向下导航到我的数据结构中的HashSets
我声明了一个Map []数组,并用HashMap填充了K of Integer和V的HashSet of String但是无法将项添加到HashSet。
我已经修改了代码以说明......
private Map[] myMaps = null;
myMaps = new Map[numRepeats];
myMaps[0] = new HashMap<Integer,HashSet<String>>();
myMaps[0].put(0, new HashSet<String>());
NetBeans中的弹出窗口显示我可以使用
访问java.util.MapmyMaps[0].
但是使用map.get(0)方法我认为会返回HashSet
myMaps[0].get(0).
显示我必须使用泛型java.lang.object,而不是HashSet。因为接下来我需要使用HashSet.add()方法,这意味着我被卡住了。我很感激建议。
谢谢
答案 0 :(得分:1)
您需要将其投射到HashMap<Integer,HashSet<String>>
。
答案 1 :(得分:0)
定义地图时,您可以使用所涉及的完整类型对其进行定义,因此:
private Map<Integer, HashSet<String>>[] myMaps = null;
然后,您不必将其强制转换(假设myMaps中的所有地图都属于该类型)。
答案 2 :(得分:0)
不幸的是,Java Generics让一个泛型类的数组变得相当棘手。但是,它是可能的,它将以类型安全的方式解决您的问题。
第一。像这样宣布你的地图
private Map<Integer,Set<String>>[] myMaps = null;
第二。使用效用函数来分配
@SuppressWarnings("unchecked")
public static <T> T[] newMapArray( int size )
{
return (T[])java.lang.reflect.Array.newInstance(Map.class, size);
}
第三。像这样分配myMaps
myMaps = newMapArray(numRepeats);