2015-08-25 43 views
2

我必须维护HashMap中每个键值的索引列表。 所以我宣布HashMap为我怎样才能使HashSet作为HashMap的参数?

HashMap<Integer,HashSet<Integer> hset = new HashSet<Integer>()> hm = new HashMap<Integer,HashSet<Integer> hset = new HashSet<Integer>()>(); 但上述声明似乎是不正确的。 所以我宣布它作为

HashSet<Integer> hset = new HashSet<Integer>(); 

但这里的问题是,我怎么能声明存储在HashSet的I,E Integer对象的类型,bacause在上述声明中的HashSet的是rawtype。

+0

也许你正在试图做的'的HashMap <整数,HashSet的>置角=新的HashMap <整数,HashSet的>();'所以以后你可以做'hset.put(1,新HashSet ());'。我希望,这是你想要实现的。 –

+0

这是简单的通用类型。我不明白你在这里感到困惑。尝试给一些仿制药。然后添加不同类型的对象到声明的变量 – SacJn

回答

2

我想补充更多的在这里, 需要初始化你的外在地图像下面

HashMap<Integer,HashSet<Integer>> map = new HashMap<Integer,HashSet<Integer>>(); 

和内收集这样

HashSet<Integer> hset = new HashSet<Integer>(); 

你插入值,如下面的地图和你的哈希集。

hset.add(1); 
hset.add(2); 
map.put(100,hset); 

hset = new HashSet<Integer>(); 
hset.add(3); 
hset.add(4); 
map.put(101,hset); 

所以每次你需要新的HashSet实例放入地图。

您可以使用您用于插入的Map键来获得内部HashSet。

HashSet<Integer> hset=map.get(100); //Same map 
+0

哇!多数民众赞成在工作,谢谢 –

+0

@prabhakarReddyG它似乎你很急于得到答案,但你没有自己分析你的问题。只要结帐为什么你的声明din't工作。 – SacJn

+0

@Viraj如果我在hashmap中有1000个密钥,我需要维护1000个hashSet对吗? –

2

这是你的声明应该像您提供一次用于HashSet是正确

HashMap<Integer,HashSet<Integer>> map = new HashMap<Integer>,HashSet<Integer>>

第二个声明。它不是原始类型。 您是否尝试添加任何其他类型的元素?

+0

这个工作,虽然一般来说它应该是'Map > map = new HashMap >();' –

+0

@LouisWasserman yes,实际上是interface类型应该使用而不是实现类型,同时宣布 – SacJn

+0

耶!那么工作......但在元素插入到映射中时,它给出的错误为“方法put(Integer,HashSet )类型HashMap >不适用于参数(int,int) “。该代码是(INT K = 1; k <= N; k ++) \t \t \t { \t \t \t \t一个[K] = B [P [K]]; \t \t \t \t map.put(a [k],k); \t \t \t} –

1

试试这个它会工作:

Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>(); 

,你可以轻松地设置仅使用Map标签。

  • 创建对象的Hashmap并把从Refrence值。它会工作