【问题标题】:Got ArrayStoreException when trying to instantiate a multi-dimensional array (3D array)尝试实例化多维数组(3D 数组)时出现 ArrayStoreException
【发布时间】:2017-10-04 17:05:17
【问题描述】:
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&lt;ArrayList&lt;ArrayList&lt;String&gt;&gt;&gt;。然后尝试将其内容放入 3 维字符串数组中。(String [][][])。代码产生如下异常:

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

请指教。

【问题讨论】:

  • new String[resultList.size()][][] 是你的问题。最后两个括号是空的,因此长度为0,不能存储任何内容。

标签: java exception arraylist multidimensional-array


【解决方案1】:

让我们分开吧:

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

根据其定义,nestedListArrayList&lt;ArrayList&lt;String&gt;&gt;

因此,nestedList.stream()ArrayList&lt;String&gt; 的流。

并且.map(List::toArray) 对每个ArrayList&lt;String&gt; 应用toArray() 方法,将其转换为Object[] 数组流。有你的问题。您正在使用不带参数的 toArray() 方法,它返回一个 Object 数组而不是 String 数组。您需要改用toArray(String[]) 方法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 2013-09-12
    • 1970-01-01
    • 2018-03-12
    • 2013-05-30
    • 2019-07-19
    • 2018-04-22
    • 2014-01-31
    相关资源
    最近更新 更多