首先创建个实体类
@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);