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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注