首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Map[] myArr,每个都有<K>Integer,<V>HashSet ...无法访问HashSet (Java)

Map[] myArr,每个都有<K>Integer,<V>HashSet ...无法访问HashSet (Java)
EN

Stack Overflow用户
提问于 2011-02-21 02:30:08
回答 3查看 242关注 0票数 0

我无法导航到我的数据结构中的HashSets

我声明了一个Map[]数组,并用整数的K和字符串的HashSet的V填充了HashMap,但无法将项添加到HashSet。

我对代码进行了裁剪,以说明...

代码语言:javascript
复制
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

代码语言:javascript
复制
myMaps[0].

但是我认为使用map.get(0)方法会返回HashSet

代码语言:javascript
复制
myMaps[0].get(0).

说明我必须使用泛型java.lang.object,而不是HashSet。因为接下来我需要使用HashSet.add()方法,这意味着我被卡住了。我将非常感谢你的建议。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-21 02:42:00

当您定义地图时,您可以使用所涉及的完整类型来定义它,因此:

代码语言:javascript
复制
private Map<Integer, HashSet<String>>[] myMaps = null;

然后,你就不需要返回它了(假设你在myMaps中的所有地图都是这种类型的)。

票数 0
EN

Stack Overflow用户

发布于 2011-02-21 02:32:56

您需要将其转换为HashMap<Integer,HashSet<String>>

票数 1
EN

Stack Overflow用户

发布于 2011-02-21 02:49:54

不幸的是,Java泛型使得拥有泛型类的数组变得相当棘手。但是,这是可能的,它将以一种类型安全的方式解决您的问题。

第一个。像这样声明您的地图

代码语言:javascript
复制
private Map<Integer,Set<String>>[] myMaps = null;

第二名。使用实用程序函数来分配

代码语言:javascript
复制
@SuppressWarnings("unchecked")
public static <T> T[] newMapArray( int size )
{
    return (T[])java.lang.reflect.Array.newInstance(Map.class, size);
}

3.像这样分配myMaps

代码语言:javascript
复制
myMaps = newMapArray(numRepeats);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5059046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档