Lambda表达式(5)|(List求和、求平均、求最大最小、分组求)

本文介绍了如何在Java8中使用Lambda表达式对List<User>对象进行求和、平均值计算,以及对象属性的最大值、最小值和分组求和/平均操作。展示了Lambda表达式如何简化代码并提高开发效率。
摘要由CSDN通过智能技术生成

Lambda表达式(5)|(List求和、求平均、求最大最小、分组求)


一、前言

Lambda表达式是Java 8中引入的一个新特性,它提供了一种清晰简洁的方式来表示一段单行的代码。Lambda表达式主要用于实现简单的接口,特别是只有一个方法的接口(函数式接口)。在集合操作中,Lambda表达式可以极大地简化代码,提高开发效率。本文将通过一个简单的例子来展示如何使用Lambda表达式进行列表中元素的求和与求平均、求最大值、最小值等一些操作。

二、数据准备

1.创建实体

创造User实体

@Data
public class User {
    private int id;
    private int age;
    private int score;
    private String name;

    public User(int id, int age,int score,String name) {
        this.id = id;
        this.age = age;
        this.score = score;
        this.name = name;
    }
}

2.初始化数据

构建List实体数据

  List<User> users = new ArrayList<>();
  users.add(new User(1, 12,78,"张三"));
  users.add(new User(2, 13,88,"李四"));
  users.add(new User(1, 11,98,"王五"));
  users.add(new User(3, 12,88,"赵六"));
  users.add(new User(2, 12,88,"孙七"));

三、list对象操作

1.对象属性求和

 //求所有学生的分数总和
 int totalScore = users.stream()
         .mapToInt(user -> user.getScore())
         .sum();

2.对象属性求平均

 //求所有学生的平均年龄
double averageScore = users.stream()
        .mapToInt(User::getAge)
        .average()
        .orElse(0.0);

3.对象属性求最大值最小值

//求所有学生中分数最高和分数最低值
int maxScore = users.stream()
        .mapToInt(User::getScore)
        .max()
        .orElse(0);
int minScore = users.stream()
        .mapToInt(User::getScore)
        .min()
        .orElse(0);

4.对象属性分组求平均

//按年龄对用户进行分组,并计算每个年龄组的平均分数
Map<Integer, Double> averageScoresByAge = users.stream()
        .collect(Collectors.groupingBy(User::getAge, Collectors.averagingInt(User::getScore)));

5.对象属性分组求和

//初始化数据
List<Integer> num = new ArrayList<>();
	num.add(1);
	num.add(2);
	num.add(3);
	num.add(4);

//按年龄对用户进行分组,并计算每个年龄组的总分数
 Map<Integer, Integer> collect = users.stream()
         .collect(Collectors.groupingBy(User::getAge, Collectors.summingInt(User::getScore)));

四、list非对象操作

1.list求和

 //求所有元素求和
 int sum1 = num.stream().mapToInt(n -> n).sum();
 int sum2 = num.stream().reduce(0, (a, b) -> a + b);
 double sum = numbers.stream().mapToDouble(n -> n.doubleValue()).sum();  

1.list求平均

double v1 = num.stream().mapToInt(n -> n).average().orElse(0.0);  

总结

通过上述例子,我们可以看到Lambda表达式在集合操作中的威力。它不仅使代码更加简洁,而且提高了代码的可读性。当然,Lambda表达式的应用远不止于此,它在许多其他场景下都能发挥重要作用。希望本文能帮助你更好地理解和使用Lambda表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值