我有一个如下所示的哈希图。
indexMap = new HashMap<String, ArrayList<Integer>>();
我可以像这样从字符串中收集值,
String[] keysProblem2 = (String[]) indexMap.keySet().toArray(new String[0]);
如何从数组列表中收集值?我试过这样做,
Integer [] valuesProblem2 = (Integer[]) indexMap.values().toArray(new Integer[indexMap.size()]);
但被给了这样的错误,
java.lang.ArrayStoreException: java.lang.String
at java.util.AbstractCollection.toArray(Unknown Source)
indexMap.values()
返回ArrayList<Integer>
s的Collection
。你不能调用.toArray(new Integer[indexMap.size()])
,因为它是ArrayList<Integer>
的集合,而不是Integer
。
如果要遍历所有 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]);