一个元素的二维数组列表进入java中的一维数组列表

Posted

技术标签:

【中文标题】一个元素的二维数组列表进入java中的一维数组列表【英文标题】:2D arraylist with one element into 1D arraylist in java 【发布时间】:2021-12-31 10:38:26 【问题描述】:

如果我知道我的ArrayList<ArrayList<String>> 将只包含一个元素(列表中的一个列表),我如何将其转换为一维 ArrayList。这样从[["A","B"]] 我得到["A","B"]

【问题讨论】:

listOfLists.stream().flatMap(List::stream).collect(Collectors.toList()); - 即使有多个列表也可以工作。 Ideone demo 您的 2D 列表包含 1D 列表,这意味着您已经有 一些 1D 列表(在里面)。为什么要将 2D 列表转换为 1D?只需2dList.get(indexOf1DList) @Pshemo 因为我不想创建新变量 @Timmy333 为什么?你想要避免的劣势是什么?无论如何,您无法更改变量的类型,因此您无法将 ArrayList<ArrayList<String>> variable 更改为 ArrayList<String> variable,因此您没有太多选择(可能是原始类型,但那将是比疾病更糟糕的药物 - 请参阅:@ 987654322@) 我也从不建议创建新变量。您始终可以在所有地方直接使用2dList.get(indexOf1DList),而不是将其存储在变量中。 【参考方案1】:

如果我们在 Java 8+ 下运行,我们将能够使用java.stream API 来解决问题:

listOfLists.stream() // transform the list into a stream, i.e. each element in 
                     // the list (in our case: List<String>) will appear in the 
                     // Stream.

    .flatMap(List::stream) // flatten the stream: for each element in the stream 
                           // (List<String> in our case), stream those entries 
                           // (Strings), construct a new stream over all entries 
                           // (Strings) of all List<String>s in the stream

    .collect(Collectors.toList()); // returns all `String`s in a new List<String>

Ideone demo

【讨论】:

我尝试使用以下代码进行测试:ArrayList&lt;String&gt; a = new ArrayList&lt;&gt;(Arrays.asList("1", "2","3")); ArrayList&lt;ArrayList&gt; b = new ArrayList&lt;&gt;(Arrays.asList(a)); System.out.println(b); b.stream().flatMap(List::stream).collect(Collectors.toList()); System.out.println(b); 但它似乎不起作用,我两次都得到[["1","2","3"]] 你看过Ideone demo吗?我们必须将流操作的结果分配给一个变量:List&lt;String&gt; result = listOfList.stream()...【参考方案2】:

我认为您只需要使用 get 方法获取第一个元素。 然后将其放入一个新变量中,例如称为oneD

【讨论】:

以上是关于一个元素的二维数组列表进入java中的一维数组列表的主要内容,如果未能解决你的问题,请参考以下文章

Java中的“二维”数组

从列表中提取二维数组的 Pythonic 方法

LeetCode - 2022 - 将一维数组变成二维数组 - Java

java基础:java中的二维数组

java基础中的一维数组和二维数组

Java中一维,二维数组的静态和动态初始化