代码之家  ›  专栏  ›  技术社区  ›  JPG

我可以使用java8流将字符串列表转换为单个字符串吗

  •  0
  • JPG  · 技术社区  · 2 年前

    我用写了下面的代码 java .

    List<String> list = new ArrayList<String>();
    list.add("book1");
    list.add("book2");
    list.add("book3");
    list.add("book4");
    
    
    String combined = "";
    
    for(int i=0;i<list.size();i++) {
        combined = combined + (i+1)+ ". "+list.get(i)+" \r\n";
    }
    
    System.out.println(combined);
    

    输出

    1. book1 
    2. book2 
    3. book3 
    4. book4 
    

    如何使用编写此代码 streams 。我尝试了以下操作:

    String combined2 = "";
    
    List<String> list2 = IntStream.range(0, list.size()).mapToObj(i->i+1+". "+list.get(i)+" \r\n").toList();
    
    
    for(String s:list2) {
        combined2 = combined2+s;
    }
    
    System.out.println(combined2);
    

    但我不想使用 for 在此处循环。如何改进我的方法?

    1 回复  |  直到 2 年前
        1
  •  2
  •   Mark Rotteveel    2 年前

    你快到了。你只需要使用 Stream.collect .

    这是修改后的代码。

    String list2 = IntStream.range(0, list.size())
            .mapToObj(i-> i+1 + ". " + list.get(i))
            .collect(Collectors.joining(System.lineSeparator()));
    

    输出

    1. book1
    2. book2
    3. book3
    4. book4