-1

我有一个哈希图,如下所示。

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)
4

1 回答 1

1

indexMap.values()返回sCollection的a ArrayList<Integer>。您不能调用.toArray(new Integer[indexMap.size()]),因为它是 s 的集合ArrayList<Integer>,而不是Integers。

如果你想遍历所有 ArrayLists,并创建一个大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]);
于 2012-09-21T05:46:13.453 回答