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;
请告知。
答案 0 :(得分:0)
让我们分手吧:
nestedList.stream().map(List::toArray)
根据其定义,nestedList
是ArrayList<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()]))