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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章