当前位置: 首页 > article >正文

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]


http://www.kler.cn/a/290179.html

相关文章:

  • Flink1.19编译并Standalone模式本地运行
  • 更改Ubuntu22.04锁屏壁纸
  • 「Py」Python基础篇 之 Python都可以做哪些自动化?
  • 系统上线后发现bug,如何回退版本?已经产生的新业务数据怎么办?
  • Matlab: 生成对抗网络,使用Datastore结构输入mat格式数据
  • SOLIDWORKS代理商鑫辰信息科技
  • Spring Cloud Gateway之路由配置
  • 谷粒商城实战笔记-285~290-分布式事务
  • 设计模式 18 备忘录模式
  • LeetCode的高频SQL50题(基础版)学习笔记
  • 惠中科技RDS自清洁膜层:光伏领域的绿色革命
  • Spark MLlib模型训练—回归算法 Survival Regression
  • 【Selenium】Selenium运行时报cannot find Chrome binary错误的解决办吧
  • linux之网络子系统-MAC帧、数据报、段 的头部信息
  • 【C++】如何解决“pointer to incomplete class type is not allowed”。
  • 一篇文章讲清楚什么是Spring AOP
  • 从汇编角度分析C语言中的局部变量是如何产生的
  • pikachu文件包含漏洞靶场通关攻略
  • 运维管理体系及其实践要点:为高效运维保驾护航
  • zabbix通过OMSA监控Dell服务器_zabbix dell http
  • 为什么我会有使用gradle,需要花长时间去下载依赖?使用maven就不会有这种感受?
  • c++ websocket简单讲解
  • 大势智慧携“实景三维+AI”信创产品体系亮相2024中国地理信息产业大会
  • 详解 HTTPS 与 TLS证书链校验
  • 避坑之:深信服AC跨三层取MAC(核心交换机是锐捷S7808C_RGOS 11.0(4)B2P1)
  • 实验室ICPR 2024论文分享┆DS MYOLO:一种基于状态空间模型的驾驶场景可靠目标检测器