Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
地图[]myArr,每个地图上都有<;K>;整数,<;V>;哈希集。。。can';无法访问哈希集(Java)_Java_Map_Hashmap_Hashset - Fatal编程技术网

地图[]myArr,每个地图上都有<;K>;整数,<;V>;哈希集。。。can';无法访问哈希集(Java)

地图[]myArr,每个地图上都有<;K>;整数,<;V>;哈希集。。。can';无法访问哈希集(Java),java,map,hashmap,hashset,Java,Map,Hashmap,Hashset,我无法向下导航到数据结构中的哈希集 我声明了一个Map[]数组,并用K表示整数的HashMap和V表示字符串的HashSet填充它,但无法向HashSet添加项 我已经删减了代码以说明 private Map[] myMaps = null; myMaps = new Map[numRepeats]; myMaps[0] = new HashMap<Integer,HashSet<String>>(); myMaps[0].put(0, new HashSet<S

我无法向下导航到数据结构中的哈希集

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

我已经删减了代码以说明

private Map[] myMaps = null;

myMaps = new Map[numRepeats];
myMaps[0] = new HashMap<Integer,HashSet<String>>();
myMaps[0].put(0, new HashSet<String>());
但是使用map.get(0)方法,我认为会返回HashSet

myMaps[0].get(0).
显示我必须使用泛型java.lang.object,而不是哈希集。因为接下来我需要使用HashSet.add()方法,这意味着我被卡住了。我将感谢您的建议


谢谢

您需要将其强制转换为
HashMap
定义映射时,您可以使用所涉及的完整类型来定义它,因此:

private Map<Integer, HashSet<String>>[] myMaps = null;
private Map[]myMaps=null;

然后,您就不必将其丢弃(假设myMaps中的所有映射都是这种类型的)。

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

第一。像这样申报你的地图

private Map<Integer,Set<String>>[] myMaps = null;
myMaps = newMapArray(numRepeats);

你有一组集合的地图吗?你需要一些类在那里,否则你会在调试的时候把头发扯下来!谢谢,与Dante617达成共识,这就是fwdThanks的方式。嗯,对我来说,在爪哇还处于早期阶段,这看起来是一盘。我会研究一下,并仔细阅读一下建议。同时,我使用Map[]myMaps=null;(因为我理解它)。thanks@bobox我当然能理解为什么这看起来很吓人。它的好处是,您可以将它放在某个实用程序类中,并在您喜欢的任何地方重用它。此外,它还隐藏未选中的强制转换。
@SuppressWarnings("unchecked")
public static <T> T[] newMapArray( int size )
{
    return (T[])java.lang.reflect.Array.newInstance(Map.class, size);
}
myMaps = newMapArray(numRepeats);