【问题标题】:Flatten list of list of strings into single comma separated list将字符串列表扁平化为单个逗号分隔列表
【发布时间】:2016-05-17 03:38:34
【问题描述】:

如何将字符串列表转换为单个逗号分隔列表(将列表合并为一个)?例如:

[[[B1, TMC, Streampix], [HSD1, Streampix - HSD], [CDV1, CDV2]]] 

进入

[B1, TMC, Streampix], [HSD1, Streampix - HSD], [CDV1, CDV2]

【问题讨论】:

  • 什么是逗号分隔列表?

标签: java collections


【解决方案1】:

使用 流变得非常容易。

流过每个列表,将其转换为用逗号分隔的字符串,然后将它们全部收集到一个大列表中。

List<String> newList = list.stream()
                           .map(x -> x.stream().collect(Collectors.joining(",")))
                           .collect(Collectors.toList());

newList.forEach(System.out::println);

输出

B1,TMC,Streampix
HSD1,Streampix - HSD
CDV1,CDV2

【讨论】:

    【解决方案2】:

    这其实很简单。

    您实际上可以创建一个由数组列表组成的数组列表!然后用循环打印出来,它会自动变成你想要的格式

    这是一个我认为可以帮助你的例子。

    ArrayList<ArrayList> list = new ArrayList();//create a list of lists
    ArrayList<String> test = new ArrayList();//sample data
    ArrayList<String> test2 = new ArrayList();//sample data
    
    test.add("Test");//add sample data to list
    test.add("Test");
    test.add("Test");
    test2.add("Test");
    test2.add("Test");
    test2.add("Test");
    
    list.add(test);//ad sample lists to main list
    list.add(test2);
    
    for (int i = 0; i < list.size(); i++)//this is what you want for your list
        System.out.println(list.get(i));
    

    这有一个输出

    [测试,测试,测试] [测试,测试,测试]而不是[[测试,测试,测试],[测试,测试,测试]]

    【讨论】:

    • 这很适合打印。我想捕获详细信息并发送到另一个函数。
    • 使用字符串缓冲区并将每个细节附加到缓冲区并将该缓冲区发送到其他函数
    【解决方案3】:

    你是这个意思吗:

    //inputList is your List of List of String
    List<String> retval = new ArrayList<>();
    for(List<String> l : inputList){
        retval.add(l.toString());
    }
    

    那么 retval = [B1, TMC, Streampix], [HSD1, Streampix - HSD], [CDV1, CDV2]

    【讨论】:

    • 最终的值仍然是 [[[B1, TMC, Streampix], [HSD1, Streampix - HSD], [CDV1, CDV2]]]]
    【解决方案4】:

    如果你有 Apache Commons Lang lib,请使用 StringUtils.join() 方法

    假设列表有以下元素

     List list = [[["B1", "TMC", "Streampix"], ["HSD1", "Streampix - HSD"], ["CDV1", "CDV2"]]]
    

    然后:

    String strList = StringUtils.join(list,',');
    System.out.println(strList);
    

    输出:

    [[B1, TMC, Streampix], [HSD1, Streampix - HSD], [CDV1, CDV2]]
    

    参考链接How to convert a List<String> list to csv string

    希望这会对你有所帮助...:)

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多