BigDecimal sum_price = list.stream().map(User::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(sum_price);
Optional<User> max = list.stream().max(Comparator.comparing(User::getSex));
Optional<User> min = list....
java使用jdk8的
Stream来获取list集合的
最小值、
最大值、总和、平均数
User 实体类
package com.example.listdemo.entity;
import lombok.Data;
import
java.math.BigDecimal;
import
java.time.LocalDate;
import
java.util.List;
* @author qzz
@Data
public class User {
Stream中常用的方法Steam的优势常用方法Filter 过滤Map方法Limit限制返回个数Distinct 去重操作skip 删除之前的元素min 最小值
Steam的优势
在项目中经常用到集合,遍历集合lambda表达式,要对集合进行过滤和排序,Stream就派上用场了。Stream作为java1.8的新特性,基于lambda表达式,它专注于对集合对象进行各种高效、可以让你从常用的if、else、for里面跳出来。提高了编程效率和代码可读性。
Filter 过滤
一条数据过滤
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@Builder
class Person {
private String name;
private
public static void main(String[] args) {
// 创建
一个包含
时间的列表
List<LocalTime> times = new ArrayList<>();
times.add(LocalTime.of(9, 0, 0));
times.add(LocalTime.of(10, 30, 0));
times.add(LocalTime.of(12, 15, 0));
times.add(LocalTime.of(8, 45, 0));
// 使用流找到最大
时间
LocalTime maxTime = times.
stream()
.max(LocalTime::compareTo)
.orElse(LocalTime.MIN);
System.out.println("最大
时间是:" + maxTime);
在上述代码中,我们创建了
一个包含 `LocalTime` 对象的列表 `times`,并使用流的 `max` 操作来找到最大
时间。`LocalTime::compareTo` 方法用于比较两个
时间的大小。如果列表为空,我们使用 `orElse` 方法来指定
一个默认值(这里使用 `LocalTime.MIN`)。
请注意,这里的 `LocalTime` 类是
Java 8 中的日期
时间 API 的一部分。如果你使用的是其他编程语言或框架,可能需要使用相应的日期
时间类来实现类似的功能。