2012-09-21 88 views
-1

我有一個hashmap,如下所示。從java中hashmap的arraylist檢索值?

indexMap = new HashMap<String, ArrayList<Integer>>(); 

我可以從這樣的字符串值,收集,

 String[] keysProblem2 = (String[]) indexMap.keySet().toArray(new String[0]); 

如何從ArrayList中收集值?我試圖做這樣的,

 Integer [] valuesProblem2 = (Integer[]) indexMap.values().toArray(new Integer[indexMap.size()]); 

但被賦予這樣的錯誤,

java.lang.ArrayStoreException: java.lang.String 
at java.util.AbstractCollection.toArray(Unknown Source) 
+3

你試圖收集*每個ArrayList的所有*整型值HashMap,還是你只是想收集有關一個單獨的密鑰的整數值? – Vulcan

+0

@Vulcan +1,不錯的地方 – MadProgrammer

+0

@vulcan我想要在Hashmap中收集arraylist的所有整數值。 –

回答

1

indexMap.values()返回ArrayList<Integer>Collection秒。您不能撥打.toArray(new Integer[indexMap.size()]),因爲它是ArrayList<Integer>的集合,而不是Integer

如果你想通過所有的ArrayList迭代,並創建一個大型Integer[],那麼你就必須做這樣的事情:

ArrayList<ArrayList<Integer>> arrays = new ArrayList<ArrayList<Integer>>(indexMap.values()); 
ArrayList<Integer> allInts = new ArrayList<Integer>(); 
for(ArrayList<Integer> ints : arrays) { 
    allInts.addAll(ints); 
} 
Integer[] valuesProblem2 = (Integer[])allInts.toArray(new Integer[0]); 
+0

感謝您的解釋,我更瞭解。 –