Lambda表达式(5)|(List求和、求平均、求最大最小、分组求)
### 文章目录
- [Lambda表达式(5)|(List求和、求平均、求最大最小、分组求)](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [@[TOC]](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [一、前言](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [二、数据准备](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [1.创建实体](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [2.初始化数据](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [三、list<User>对象操作](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [1.对象属性求和](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [2.对象属性求平均](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [3.对象属性求最大值最小值](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [4.对象属性分组求平均](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [5.对象属性分组求和](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [四、list非对象操作](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [1.list<Integer>求和](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [1.list<Integer>求平均](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
- [总结](#文章目录 Lambda表达式(5)|(List求和、求平均、求最大最小、分组求) @[TOC] 一、前言 二、数据准备 1.创建实体 2.初始化数据 三、list<User>对象操作 1.对象属性求和 2.对象属性求平均 3.对象属性求最大值最小值 4.对象属性分组求平均 5.对象属性分组求和 四、list非对象操作 1.list<Integer>求和 1.list<Integer>求平均 总结)
一、前言
Lambda表达式是Java 8中引入的一个新特性,它提供了一种清晰简洁的方式来表示一段单行的代码。Lambda表达式主要用于实现简单的接口,特别是只有一个方法的接口(函数式接口)。在集合操作中,Lambda表达式可以极大地简化代码,提高开发效率。本文将通过一个简单的例子来展示如何使用Lambda表达式进行列表中元素的求和与求平均、求最大值、最小值等一些操作。
二、数据准备
1.创建实体
创造User实体
c
@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实体数据
c
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.对象属性求和
c
//求所有学生的分数总和
int totalScore = users.stream()
.mapToInt(user -> user.getScore())
.sum();
2.对象属性求平均
c
//求所有学生的平均年龄
double averageScore = users.stream()
.mapToInt(User::getAge)
.average()
.orElse(0.0);
3.对象属性求最大值最小值
c
//求所有学生中分数最高和分数最低值
int maxScore = users.stream()
.mapToInt(User::getScore)
.max()
.orElse(0);
int minScore = users.stream()
.mapToInt(User::getScore)
.min()
.orElse(0);
4.对象属性分组求平均
c
//按年龄对用户进行分组,并计算每个年龄组的平均分数
Map<Integer, Double> averageScoresByAge = users.stream()
.collect(Collectors.groupingBy(User::getAge, Collectors.averagingInt(User::getScore)));
5.对象属性分组求和
c
//初始化数据
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求和
c
//求所有元素求和
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求平均
c
double v1 = num.stream().mapToInt(n -> n).average().orElse(0.0);
总结
通过上述例子,我们可以看到Lambda表达式在集合操作中的威力。它不仅使代码更加简洁,而且提高了代码的可读性。当然,Lambda表达式的应用远不止于此,它在许多其他场景下都能发挥重要作用。希望本文能帮助你更好地理解和使用Lambda表达式。