2015-08-25 48 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值。它會工作