当前位置: 首页 > 面试题库 >

将嵌套列表转换为二维数组

仲浩旷
2023-03-14
问题内容

我正在尝试将嵌套列表转换为2d数组。

List<List<String>> list = new ArrayList<>();

list.add(Arrays.asList("a", "b", "c"));
list.add(Arrays.asList("dd"));
list.add(Arrays.asList("eee", "fff"));

我想把它做成一个String[][]。我尝试了以下方法:

String[][] array = (String[][]) list.toArray();      // ClassCastException

String[][] array = list.toArray(new String[3][3]);   // ArrayStoreException

String[][] array = (String[][]) list.stream()        // ClassCastException
    .map(sublist -> (String[]) sublist.toArray()).toArray();

有没有可行的方法?请注意,直到运行时我才知道列表的大小,并且列表可能会锯齿。


问题答案:

没有简单的内置方法可以执行所需的操作,因为您toArray只能返回存储在list中的元素数组,在您的情况下也可以是list。

最简单的解决方案是创建二维数组,并用toArray每个嵌套列表的结果填充它。

String[][] array = new String[list.size()][];

int i = 0;
for (List<String> nestedList : list) {
    array[i++] = nestedList.toArray(new String[nestedList.size()]);
}

(如果您像使用Alex一样将Java8与流一起使用,则可以缩短此代码)



 类似资料:
  • 问题内容: 我有一个Object的二维数组。所以我有。将其转换为Java 的最佳方法是什么? 问题答案: 对于任何二维数组,这都是一种不错的方法,假设您希望按以下顺序进行操作: [[array [0] -elems],[array [1] elems] …]

  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数

  • 我在Firebase中有以下数据: 在Flutter中,我有以下两个对象: 我正在尝试将Firebase中的集合嵌套贴图转换为Flatter中的列表,但遇到了问题。在Flatter中将具有贴图字段的贴图对象转换为列表的最佳方法是什么? 我知道我在处理map对象时遇到了问题,根据我的方法,我收到了不同的错误,但通常类似于以下情况之一: 错误1:“键入“\u InternalLinkedHashMap

  • 我正在制作一个程序,将图片转换成灰度形式,然后从灰度形式转换成公平格式。 我正在使用嵌套的for-loops来转换嵌套列表。这工作得很好,但我希望使用流来实现,如果使用流,输出会发生变化,但我认为应该得到相同的输出。我错在哪? grayPhoto是 你们有没有看到我做错了什么或者小溪应该是怎样的?

  • 将数据从嵌套列表转换为对象数组(可以用作JTable的数据)的最有效的方法是什么? 多谢!

  • 本文向大家介绍Python-将嵌套字典列表转换为Pandas Dataframe,包括了Python-将嵌套字典列表转换为Pandas Dataframe的使用技巧和注意事项,需要的朋友参考一下 python很多时候会从各种来源接收数据,这些数据可以采用不同的格式,例如csv,JSON等,可以转换为python列表或字典等。但是要使用诸如pandas之类的包应用计算或分析,我们需要将此数据转换为一