2012-09-21 160 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

感谢您的解释,我更了解。 –