我有以下for循环遍历一个字符串列表,并将每个单词的第一个字符存储在StringBuilder中.我想知道如何将其转换为lambda表达式
StringBuilder chars = new StringBuilder(); for (String l : list) { chars.append(l.charAt(0)); }
解决方法
假设您在StringBuilder之后调用toString(),我认为您只是在将每个字符串映射到单字符子字符串之后寻找
Collectors.joining()
:
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 } }
注意使用子字符串而不是charAt,所以我们仍然有一串字符串来处理.