JAVA 1.8 stream()流的一些应用测试

发布时间 2023-06-29 14:06:00作者: 沉默的老牛
@Test
    public void test1(){
        List<Person> personList = new ArrayList<Person>();
        personList.add(new Person("Tom", 8900, 23, "male", "New York"));
        personList.add(new Person("Jack", 7000, 25, "male", "Washington"));
        personList.add(new Person("Lily", 7800, 21, "female", "Washington"));
        personList.add(new Person("Anni", 8200, 24, "female", "New York"));
        personList.add(new Person("Owen", 9500, 25, "male", "New York"));
        personList.add(new Person("Alisa", 7900, 26, "female", "New York"));

        /**
         * filter:筛选,是按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中的操作。
         * map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。
         * collect,收集,可以说是内容最繁多、功能最丰富的部分了。从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合。
         */
        List<String> fiterList = personList.stream().filter(x -> x.getSalary() > 8000).map(Person::getName)
                .collect(Collectors.toList());
        System.out.println("高于8000的员工姓名:" + fiterList);

        List<Person> fiterList1 = personList.stream().filter(x -> x.getSalary() > 8000).collect(Collectors.toList());
        System.out.println("----fiterList1:" + JSONUtil.toJsonStr(fiterList1));

        Optional<Person> oldPerson = personList.stream().max(Comparator.comparingInt(Person::getAge));
        System.out.println("---------oldPerson:"+JSONUtil.toJsonStr(oldPerson.get()));

        List<Person> fiterList2 = personList.stream().map(person -> {
            Person newPerson = new Person(person.getName(),person.getSalary(),person.getAge()+3,person.getSex(),person.getArea());
            return newPerson;
        }).collect(Collectors.toList());
        System.out.println("----fiterList2:" + JSONUtil.toJsonStr(fiterList2));

        List<Person> fiterList3 = fiterList2.stream().map(person -> {
            Person newPerson = new Person(person.getName(),person.getAge()>28 ?person.getSalary()+500 : person.getSalary()+1000,person.getAge(),person.getSex(),person.getArea());
            return newPerson;
        }).collect(Collectors.toList());
        System.out.println("----fiterList3:" + JSONUtil.toJsonStr(fiterList3));

        Map<String,Person> map = personList.stream().collect(Collectors.toMap(Person::getName, p -> p));
        System.out.println("---------------map:"+JSONUtil.toJsonStr(map));

    }