将 for 循环转换为字符串作为 lambda 表达式

2022-09-01 12:25:44

我有以下for循环,它循环访问字符串列表并将每个单词的第一个字符存储在.我想知道如何将其转换为lambda表达式StringBuilder

StringBuilder chars = new StringBuilder();
for (String l : list) {
    chars.append(l.charAt(0));
}  

答案 1

假设你在之后调用,我认为你只是在寻找Collectors.joining()之后,将每个字符串映射到一个字符的子字符串:toString()StringBuilder

String result = list
    .stream()
    .map(s -> s.substring(0, 1))
    .collect(Collectors.joining());

示例代码:

import java.util.*;
import java.util.stream.*;

public class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("foo");
        list.add("bar");
        list.add("baz");
        String result = list
            .stream()
            .map(s -> s.substring(0, 1))
            .collect(Collectors.joining());
        System.out.println(result); // fbb
    }
}

请注意使用 代替 ,因此我们仍然有一个字符串流可以使用。substringcharAt


答案 2

有很多方法可以做到这一点 - 最简单的选择:坚持添加到a并执行以下操作:StringBuilder

StringBuilder chars = new StringBuilder();

list.forEach(l -> chars.append(l.charAt(0)));