目录
流操作可以分为两类:中间操作和终端操作。
中间操作
filter
用于筛选流中的元素,返回一个只包含符合条件的元素的新流。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dad");
List<String> filteredNames = names.stream().filter(name -> name.startsWith("A")).collect(Collectors.toList());
System.out.println(filteredNames);
// 输出: [Alice]
map
用于将流中的每个元素映射到另一个元素。它通常用于转换操作。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dad");
List<Integer> nameLengths = names.stream().map(String::length).collect(Collectors.toList());
System.out.println(nameLengths);
// 输出: [5, 3, 7, 5]
flatMap
用于将流中的每个元素转换成一个流,然后将多个流合并成一个流。
java
复制代码
List<List<String>> listOfLists = Arrays.asList(
Arrays.asList("a", "b", "c"),
Arrays.asList("d", "e", "f"),
Arrays.asList("g", "h", "i")
);
List<String> flatList = listOfLists.stream().flatMap(Collection::stream).collect(Collectors.toList());
System.out.println(flatList);
// 输出: [a, b, c, d, e, f, g, h, i]
sorted