stream流常见方法

在 Spring Boot 项目开发中,Java 8 引入的 Stream 流提供了很多强大且常用的方法,以下是一些主要的:

**一、过滤方法**

 1. `filter(Predicate<? super T> predicate)`:用于筛选出满足给定条件的元素。

- 示例:

```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); // evenNumbers 为 [2, 4, 6]

 **二、映射方法**

1. `map(Function<? super T,? extends R> mapper)`:将流中的每个元素通过给定的函数进行转换。

- 示例:

List<String> words = Arrays.asList("apple", "banana", "cherry"); 
List<Integer> wordLengths = words.stream() 
.map(String::length) .collect(Collectors.toList()); // wordLengths 为 [5, 6, 6] 

**三、排序方法**

1. `sorted()`:对元素进行自然排序。如果元素是自定义对象,需要实现 `Comparable` 接口。

2. `sorted(Comparator<? super T> comparator)`:使用自定义的比较器进行排序。

- 示例:

List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 4); 
List<Integer> sortedNumbers = numbers.stream() 
.sorted() 
.collect(Collectors.toList()); // sortedNumbers 为 [1, 2, 4, 5, 8] 

**四、聚合方法**

1. `count()`:返回流中元素的数量。

- 示例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); 
long count = numbers.stream().count(); // count 为 5 ``` 
//min(Comparator<? super T> comparator)`和`max(Comparator<? super T> comparator)`:
//分别返回流中的最小元素和最大元素。 
//- 示例: 
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 4); 
Optional<Integer> minNumber = numbers.stream() 
.min(Integer::compareTo);
 Optional<Integer> maxNumber = numbers.stream() 
.max(Integer::compareTo); 
// minNumber 为 Optional[1],maxNumber 为 Optional[8]
//3. `reduce(BinaryOperator<T> accumulator)`:将流中的元素进行归约操作,得到一个单一的结果。 
//- 示例: 
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); 
Optional<Integer> sum = numbers.stream() 
.reduce((a, b) -> a + b); // sum 为 Optional[15] 

**五、遍历方法**

1. `forEach(Consumer<? super T> action)`:对流中的每个元素执行给定的操作。

- 示例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); 
numbers.stream() 
.forEach(System.out::println); // 打印 1 2 3 4 5

**六、去重方法**

1. `distinct()`:去除流中的重复元素。

- 示例:

List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5); 
List<Integer> distinctNumbers = numbers.stream() 
.distinct() 
.collect(Collectors.toList()); // distinctNumbers 为 [1, 2, 3, 4, 5]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值