java8 stream().forEach、stream().map、stream().filter、stream().sortedの違いと使い方

3513 ワード

List list = new ArrayList<>();
        list.add(Teacher.builder().age(28).name("  ").build());
        list.add(Teacher.builder().age(27).name("  ").build());
        list.add(Teacher.builder().age(29).name("  ").build());

        //          
        list.stream().forEach(teacher -> {
            if ("  ".equals(teacher.getName())) {
                Address address = Address.builder().address("  ").build();
                teacher.setAddress(address);
            }
        });
        System.out.println("    List:" + list);

        //      ,     
        List listCopy = list.stream().map(teacher -> {
            if ("  ".equals(teacher.getName())) {
                Address address = Address.builder().address("  ").build();
                teacher.setAddress(address);
            }
            return teacher;
        }).collect(Collectors.toList());
        System.out.println("    List:" + listCopy);

        //  
        List listFilter = list.stream().filter(
                teacher -> AllTypeUtils.isNotEmptyAndNotNull(teacher.getAddress()
                )).collect(Collectors.toList());
        System.out.println("    List:" + listFilter);

        //  :  (     )
        List listSortedAsc1 = list.stream().sorted(Comparator.comparing(Teacher::getAge)
        ).collect(Collectors.toList());
        System.out.println("    List:" + listSortedAsc1);

        //  :  (     )
        List listSortedAsc2 = list.stream().sorted((teacher1, teacher2) -> {
                    return teacher1.getAge().compareTo(teacher2.getAge());
                    //              :Comparator.comparing(Teacher::getAge)
                }
        ).collect(Collectors.toList());
        System.out.println("    List:" + listSortedAsc2);

        //  :  (     )
        List listSortedDesc = list.stream().sorted(Comparator.comparing(Teacher::getAge).reversed()
        ).collect(Collectors.toList());
        System.out.println("    List:" + listSortedDesc);

        //  :  (     )
        List listSortedDesc2 = list.stream().sorted((teacher1, teacher2) -> {
                    return teacher2.getAge().compareTo(teacher1.getAge());
                }
        ).collect(Collectors.toList());
        System.out.println("    List:" + listSortedDesc2);
    List:[Teacher(name=  , age=28, address=null), Teacher(name=  , age=27, address=null), Teacher(name=  , age=29, address=Address(address=  ))]
    List:[Teacher(name=  , age=28, address=null), Teacher(name=  , age=27, address=null), Teacher(name=  , age=29, address=Address(address=  ))]
    List:[Teacher(name=  , age=29, address=Address(address=  ))]
    List:[Teacher(name=  , age=27, address=null), Teacher(name=  , age=28, address=null), Teacher(name=  , age=29, address=Address(address=  ))]
    List:[Teacher(name=  , age=27, address=null), Teacher(name=  , age=28, address=null), Teacher(name=  , age=29, address=Address(address=  ))]
    List:[Teacher(name=  , age=29, address=Address(address=  )), Teacher(name=  , age=28, address=null), Teacher(name=  , age=27, address=null)]
    List:[Teacher(name=  , age=29, address=Address(address=  )), Teacher(name=  , age=28, address=null), Teacher(name=  , age=27, address=null)]