java8新特性一般用法

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":"男"}]]



猜你喜欢

转载自blog.csdn.net/qq_37642205/article/details/79849873