【问题标题】:Convert List<List<String>> to a list<String> java将 List<List<String>> 转换为 list<String> java
【发布时间】:2021-09-17 06:00:57
【问题描述】:

我有 ArrayList&lt;List&lt;String&gt;&gt;,其中包含数据。例如:

[[1,2,3],[1,2,3],[1,2,3]]

我尝试将其转换为List&lt;String&gt;,但它变成了

[1,2,3,1,2,3,1,2,3]

代码:

List<String> f = 
            ch.stream()
                .flatMap(List::stream)
                .collect(Collectors.toList());
    System.out.println(f);

如何将其转换为以下输出,以便通过list.get(index) 获得索引

List<String> list = [1,2,3],[1,2,3],[1,2,3];

【问题讨论】:

  • 我认为[[1,2,3],[1,2,3],[1,2,3]] 不是有效的List&lt;List&lt;String&gt;&gt;。就此而言,[1,2,3],[1,2,3],[1,2,3] 也不是 List&lt;String&gt;
  • 其实它是一个csv数据,每一行都作为列表存储在另一个列表中
  • @john 所以你想要每一行的数据?给出索引并获取数据列表。你的主要目标是什么?
  • 其实我有每一行的数据。我只想从 Arraylist> 中提取 list 以便将其写入 csv 文件。我使用了上面的代码,但它将所有行转换为一个列表
  • @john 我想你不明白为什么它是 Arraylist>。您也可以更改或删除此表单中的数据。但是如果你想提取列表,你唯一得到的就是一个列表。列表 列表 = [1,2,3],[1,2,3],[1,2,3];这甚至是不可能的。

标签: java string list arraylist stream


【解决方案1】:

您是否在关注以下内容?

    List<List<String>> ch = List.of(List.of("1", "2", "3"), List.of("1", "2", "3"), List.of("1", "2", "3"));
    
    System.out.println(ch);
    
    List<String> f = ch.stream()
            .map(List::toString)
            .collect(Collectors.toList());
    
    System.out.println(f);

在输出中,两个列表看起来相同:

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

但是从代码中我们可以看出,前者是列表的列表,后者只是字符串的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多