lambada常见操作

237 阅读2分钟

1准备数据

Person person =new Person();
person.setId(1).setAge(72).setSex("男");

    Person person2 =new Person();
    person2.setId(2).setAge(12).setSex("女");

    Person person3 =new Person();
    person3.setId(3).setAge(23).setSex("男");

    List<Person> personList =new ArrayList<>();
    personList.add(person);
    personList.add(person2);
    personList.add(person3);

2测试用例

    /**
     *  找出年龄大于10的人
     * Person(age=12, sex=女)
     * Person(age=23, sex=男)
     */

    personList.stream().filter((x) -> x.getAge() > 10).forEach(System.out::println);


    /**
     *
     * 过滤
     * 排除掉性别为男的用户
     * 输出 Person(age=12, sex=女)
     */

  personList.stream().filter(a -> !a.getSex().equals("男")).forEach(System.out::println);


    /**
     * 年龄倒序排序
     *输出:
     *  Person(id=1, age=72, sex=男)
     * Person(id=3, age=23, sex=男)
     * Person(id=2, age=12, sex=女)
     */


  personList.stream().sorted(Comparator.comparing(Person::getAge).reversed()).forEach(System.out::println);



    int sum = personList.stream().mapToInt(Person::getAge).sum();
    OptionalInt max = personList.stream().mapToInt(Person::getAge).max();
    OptionalInt min = personList.stream().mapToInt(Person::getAge).min();
    System.out.println(max);
    System.out.println(min);
    System.out.println(sum);


    /**
     * map找出val值
     * list转map
     */

    Map<String, Object>map =new HashMap<>();
    map.put("1","faker");
    map.put("2","bang");
    map.put("3","benji");
    map.put("4","khan");

    List<Object> collect = map.entrySet().stream().filter(x -> "benji".equals(x.getValue()))
            .map(x -> x.getValue())
            .collect(Collectors.toList());
    System.out.println(collect);


    Map<Integer, Person> personMap = personList.stream().collect(Collectors.toMap(Person::getId, a -> a, (k1, k2) -> k1));
    personMap.forEach( (k,v)->{System.out.println(k+" "+v);} );