首先创建个实体类

@Data
    public class Person {
        private String name;
        private String age;
        private String money;
    }

然后插入三条数据

List<Person> list = new ArrayList<>() {
    private static final long serialVersionUID = 1L;
    {
        add(new Person("zhangsan", 18, 1500));
        add(new Person("lisi", 30, 2500));
        add(new Person("wangwu", 22, 1300));
    }
};

1. 找出最大年龄和最小年龄等

IntSummaryStatistics stats = list.stream()
    .mapToInt((obj) -> obj.getMoney())
    .summaryStatistics();
System.out.println("最高工资: " + stats.getMax());  
System.out.println("最低工资: " + stats.getMin());  
System.out.println("总薪资: " + stats.getSum());  
System.out.println("平均薪资: " + stats.getAverage());

2. 循环数组

list.forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));

3. 给wangwu涨工资500

list.forEach((obj) -> {
    if(obj.getName().equals("wangwu")) {
        obj.setMoney(obj.getMoney() + 500);
    }
});
System.out.println("给wangwu涨工资500");
list.forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));

4. 工资高于2000的员工

System.out.println("工资高于2000的员工");
    list.stream().filter((obj) -> (obj.getMoney() > 2000))
        .forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));

5. 年龄大于20且薪资小于2000的员工

System.out.println("年龄大于20且薪资小于2000的员工");
    list.stream().filter((obj) -> (obj.getMoney() < 2000))
        .filter((obj) -> (obj.getAge() > 20))
        .forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));
    System.out.println("年龄大于20且薪资小于2000的员工");
    list.stream().filter((obj) -> (obj.getMoney() < 2000 && obj.getAge() > 20))
        .forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));

6. 根据薪资升序,取前2个,放到另一个集合中

List<Person> newList = list.stream()
    .sorted((obj1, obj2) -> (obj1.getMoney() - obj2.getMoney()))
    .limit(2)
    .toList();
System.out.println("根据薪资排序,取前2个,放到另一个集合中");
newList.forEach((obj) -> System.out.println(String.format("姓名:%s;年龄:%s;薪资:%s。", obj.getName(), obj.getAge(), obj.getMoney()) ));

7. 最低和最高工资的员工

Person min = list.stream().min((obj1, obj2) -> (obj1.getMoney() - obj2.getMoney())).get();
    Person max = list.stream().max((obj1, obj2) -> (obj1.getMoney() - obj2.getMoney())).get();
    System.out.println(String.format("最低工资 姓名:%s;年龄:%s;薪资:%s。", min.getName(), min.getAge(), min.getMoney()));
    System.out.println(String.format("最高工资 姓名:%s;年龄:%s;薪资:%s。", max.getName(), max.getAge(), max.getMoney()));

8. 将姓名拼接成字符串

String str = list.stream().map(Person::getName).collect(Collectors.joining(","));
    System.out.println("将姓名拼接成字符串:" + str);