尝试实例化多维数组(3D数组)时出现ArrayStoreException

时间:2017-10-04 17:05:18

标签: java exception arraylist multidimensional-array

resultList = [[[Computer lessons], [Leon, Maria]], [[Computer repair], [Jack, Leon]], [[Data recovery service], [Leon]], [[Handyman], [Jack]], [[House cleaning], [Jack, Maria]]]

String[][][] result = new String [resultList.size()][][];

int count = 0;
for(ArrayList<ArrayList<String>> nestedList:resultList) {

   result[count]= nestedList.stream().map(List::toArray).toArray(String[][]::new);
   count ++;
}

上面的代码使用一些值初始化ArrayList<ArrayList<ArrayList<String>>>。然后尝试将其内容放在一个三维字符串数组中。(String [][][])。该代码生成以下异常:

java.lang.ArrayStoreException: [Ljava.lang.Object; 

请告知。

1 个答案:

答案 0 :(得分:0)

让我们分手吧:

    nestedList.stream().map(List::toArray)

根据其定义,nestedListArrayList<ArrayList<String>>

因此,nestedList.stream()ArrayList<String>的流。

.map(List::toArray)在每个toArray()上应用ArrayList<String>方法将其转换为Object[]数组流。这是你的问题。您正在使用不带参数的toArray()方法,它返回一个Object数组而不是String数组。您需要使用toArray(String[])方法。

.map(list -> list.toArray(new String[list.size()]))