1.创建实体类Stu
@Builder
public class Stu {
@NotNull
private Long id;
@NotNull
private String name;
@NotNull
private String sex;
@NotNull
private Integer myAge;
public Stu() {
}
public Stu(Long id, String name, String sex, Integer myAge) {
this.id = id;
this.name = name;
this.sex = sex;
this.myAge = myAge;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getMyAge() {
return myAge;
}
public void setMyAge(Integer myAge) {
this.myAge = myAge;
}
}
2.测试方法
public static void main(String[] args) {
List<Stu> stuList = new ArrayList<>();
Stu stu1 = Stu.builder().id(1L).sex("男").name("admin1").myAge(18).build();
Stu stu2 = Stu.builder().id(2L).sex("男").name("admin2").myAge(19).build();
Stu stu3 = Stu.builder().id(3L).sex("女").name("admin3").myAge(18).build();
Stu stu4 = Stu.builder().id(4L).sex("男").name("admin4").myAge(18).build();
stuList.add(stu1);
stuList.add(stu2);
stuList.add(stu3);
stuList.add(stu4);
// 遍历list
stuList.forEach(stu -> System.out.println("stu = [" + stu + "]"));
// 过滤年龄为18的数据
List<Stu> ageFilterList = stuList.stream().filter(stu ->
stu.getMyAge().equals(18)).collect(Collectors.toList());
System.out.println("过滤年龄为18的数据 = "+JSON.toJSONString(ageFilterList));
// 统计年龄为18的个数
Long ageCount = stuList.stream().filter(stu -> stu.getMyAge()==18).count();
System.out.println("ageCount = [" + ageCount + "]");
// 按照性别分组
Map<String, List<Stu>> groupMap = stuList.stream().collect(Collectors.groupingBy(stu ->
stu.getSex()));
System.out.println("按照性别分组 = "+JSON.toJSONString(groupMap));
// List转化Map
Map<Long, Object> map = stuList.stream().collect(Collectors.toMap
(Stu::getId,Stu::getName));
map.forEach((k, v) -> System.out.println("list转map k = [" + k + "]"+"v = ["+v+"]"));
// allMatch 判断所有Stu的age都为18
boolean matched = stuList.stream().allMatch(stu -> stu.getMyAge()==18);
System.out.println("matched = [" + matched + "]");
// 返回姓名列表
List<String> names = stuList.stream().map(stu ->
stu.getName()).collect(Collectors.toList());
System.out.println("names = [" + JSON.toJSONString(names) + "]");
//查找性别为男的第一个
Optional<Stu> optionals = stuList.stream().filter(stu ->
stu.getSex().equals("男")).findFirst();
System.out.println("性别为男的员工 = [" + JSON.toJSONString(optionals) + "]");
// 查找年龄的总岁
Long myageCount = stuList.stream().mapToLong(Stu::getMyAge).sum();
System.out.println("总岁数 = [" + myageCount + "]");
// 按年龄的降序来列出信息
List<Stu> sortAgeStuList = stuList.stream().sorted((e1,e2)->
Integer.compare(e2.getMyAge(),e1.getMyAge())).collect(Collectors.toList());
System.out.println("年龄的降序 = [" + JSON.toJSONString(sortAgeStuList) + "]");
// 按年龄的降序前两条
List<Stu> sortAgeLimit = stuList.stream().sorted((e1,e2)->
Integer.compare(e2.getMyAge(),e1.getMyAge())).limit(2).collect(Collectors.toList());
System.out.println("年龄的降序 = [" + JSON.toJSONString(sortAgeLimit) + "]");
// 获取平均年龄
OptionalDouble avgAge = stuList.stream().mapToInt(c->c.getMyAge()).average();
System.out.println("平均年龄 = "+avgAge.getAsDouble());
// 判断所有年龄是否为19返回布尔数组
List<Boolean> list = stuList.stream().map(stu -> stu.getMyAge().intValue() == 19).collect(Collectors.toList());
System.out.println(JSON.toJSONString(list));
// 替换所有的年龄数值
List<Stu> stuListReplace = stuList.stream().map((stu) -> {
stu.setMyAge(5);
return stu;
}).collect(Collectors.toList());
System.out.println("替换后的集合 = [" + JSON.toJSONString(stuListReplace) + "]");
}
}
控制台打印:
stu = [Stu{id=1, name='admin1', sex='男', myAge=18}]
stu = [Stu{id=2, name='admin2', sex='男', myAge=19}]
stu = [Stu{id=3, name='admin3', sex='女', myAge=18}]
stu = [Stu{id=4, name='admin4', sex='男', myAge=18}]
过滤年龄为18的数据 = [{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":3,"myAge":18,"name":"admin3","sex":"女"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]
ageCount = [3]
按照性别分组 = {"女":[{"id":3,"myAge":18,"name":"admin3","sex":"女"}],"男":[{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]}
list转map k = [1]v = [admin1]
list转map k = [2]v = [admin2]
list转map k = [3]v = [admin3]
list转map k = [4]v = [admin4]
matched = [false]
names = [["admin1","admin2","admin3","admin4"]]
性别为男的员工 = [{"id":1,"myAge":18,"name":"admin1","sex":"男"}]
总岁数 = [73]
年龄的降序 = [[{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":1,"myAge":18,"name":"admin1","sex":"男"},{"id":3,"myAge":18,"name":"admin3","sex":"女"},{"id":4,"myAge":18,"name":"admin4","sex":"男"}]]
年龄的降序 = [[{"id":2,"myAge":19,"name":"admin2","sex":"男"},{"id":1,"myAge":18,"name":"admin1","sex":"男"}]]
平均年龄 = 18.25
[false,true,false,false]
替换后的集合 = [[{"id":1,"myAge":5,"name":"admin1","sex":"男"},{"id":2,"myAge":5,"name":"admin2","sex":"男"},{"id":3,"myAge":5,"name":"admin3","sex":"女"},{"id":4,"myAge":5,"name":"admin4","sex":"男"}]]