1、创建流
// 从集合创建流
List<String> list = Arrays.asList("apple", "banana", "cherry");
Stream<String> streamFromList = list.stream();
// 从数组创建流
String[] array = {"apple", "banana", "cherry"};
Stream<String> streamFromArray = Arrays.stream(array);
2、中间操作
(1)filter(Predicate predicate)
:用于过滤流中的元素,只保留满足给定条件的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().filter(n -> n % 2 == 0).forEach(System.out::println); // 输出偶数
(2)map(Function mapper)
:将流中的每个元素映射为另一种形式,例如类型转换或提取信息。
List<String> strings = Arrays.asList("apple", "banana", "cherry");
strings.stream().map(String::length).forEach(System.out::println); // 输出每个字符串的长度
(3)sorted()
:对流中的元素进行自然排序(对于数值型是升序,对于字符串是字典顺序)。也可以接受一个Comparator来指定排序规则。
List<Integer> numbers = Arrays.asList(5, 3, 4, 1, 2);
numbers.stream().sorted().forEach(System.out::println); // 按升序输出数字
(4)distinct():
去重
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
numbers.stream().distinct().forEach(System.out::println); // 去重后输出
(5)limit(long maxSize)
:截取
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().limit(3).forEach(System.out::println); // 输出前三个元素
(6)skip(long n)
:跳过
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().skip(2).forEach(System.out::println); // 跳过前两个元素后输出剩余的
3、终端操作
(1)collect(Collector collector)
:收集流中的元素到不同的容器中,比如List、Set等。
List<String> strings = Arrays.asList("apple", "banana", "cherry");
List<String> filteredStrings = strings.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
System.out.println(filteredStrings); // 输出以'a'开头的字符串列表
(2)reduce(BinaryOperator accumulator)
:通过累加器函数将流中的元素组合成一个单一的结果。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, Integer::sum);
System.out.println(sum); // 输出总和:15
(3)forEach(Consumer action)
:遍历
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream().forEach(System.out::println); // 打印所有数字
(4)count()
:聚合操作,得出数据数量
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream().count();
System.out.println(count); // 输出总数:5