将列表转换为数组。JAVAlang.ArrayStoreException
有一份清单:
List<Integer[]> myList = new ArrayList<Integer[]>();
它包含单个条目,但可能包含多个条目:
myList = [[2,null,1,null,null,3,6,1,1]]
我需要将此列表转换为数组Integer[][]
,但由于空值,转换失败:
Integer[] myArr = myList.toArray(new Integer[myList.size()]);
如何解决这个问题
编辑#1
我需要得到:
myArr = [2,null,1,null,null,3,6,1,1]
# 1 楼答案
试一试(假设您确实有您在评论中提到的
List<Integer[]>
):如果您将数组列表转换为数组,您将得到一个二维数组,因此您的参数也应该是一个
# 2 楼答案
为我工作
# 3 楼答案
如果你有
如果其中只有一个数组,则可以执行以下操作
null
从不导致new Integer[]
的ArrayStoreException# 4 楼答案
你确定你就是这么做的吗。我已经尝试过此代码,但效果很好:
显示“2,空,1”
但是,如果在“for循环”中我将“Integer I”更改为“int I”,则自动装箱将失败,并在null元素上出现NullPointerException
只要在整数对象(而不是int原语)上创建一个数组,并将该数组的元素视为整数对象(而不是执行会触发自动装箱/取消装箱的操作),就应该可以了
否则,在将列表转换为数组之前,只需手动删除列表中的所有空值