我无法导航到我的数据结构中的HashSets
我声明了一个Map[]数组,并用整数的K和字符串的HashSet的V填充了HashMap,但无法将项添加到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.Map
myMaps[0].但是我认为使用map.get(0)方法会返回HashSet
myMaps[0].get(0).说明我必须使用泛型java.lang.object,而不是HashSet。因为接下来我需要使用HashSet.add()方法,这意味着我被卡住了。我将非常感谢你的建议。
谢谢
发布于 2011-02-21 02:42:00
当您定义地图时,您可以使用所涉及的完整类型来定义它,因此:
private Map<Integer, HashSet<String>>[] myMaps = null;然后,你就不需要返回它了(假设你在myMaps中的所有地图都是这种类型的)。
发布于 2011-02-21 02:32:56
您需要将其转换为HashMap<Integer,HashSet<String>>。
发布于 2011-02-21 02:49:54
不幸的是,Java泛型使得拥有泛型类的数组变得相当棘手。但是,这是可能的,它将以一种类型安全的方式解决您的问题。
第一个。像这样声明您的地图
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);
}3.像这样分配myMaps
myMaps = newMapArray(numRepeats);https://stackoverflow.com/questions/5059046
复制相似问题