天天看点

四大函数式接口以及Stream流

/**
 * Created by Monologue_zsj on 2021/5/10 20:37
 * Author:小脸儿红扑扑
 * Description:题目:请按照给出数据,找出同时满足以下条件的用户,也即以下条件全部满足
 *                  偶数工D且年龄大于24且用户名转为大写且用户名字母倒排序
 *                  只输出一个用户名字
 */
public class StreamDemo {
    public static void main(String[] args) {

        User user1 = new User(11, "a", 23);
        User user2 = new User(12, "b", 24);
        User user3 = new User(13, "c", 22);
        User user4 = new User(14, "d", 28);
        User user5 = new User(16, "e", 26);

        List<User> list = Arrays.asList(user1, user2, user3, user4, user5);

        list.stream()
                .filter(t -> t.getId() % 2 == 0)
                .filter(t -> t.getAge() > 24)
                .map(m -> m.getName().toUpperCase())
                .sorted(((o1, o2) -> o2.compareTo(o1)))
                .limit(1)
                .forEach(System.out::println);


        System.out.println("=================我是分割线=================");
        /*四大函数式接口*/
        /*函数型接口Function<T, R> 输入类型T,返回类型R*/
        Function<String, Integer> function = s ->  s.length();
        ;
        System.out.println(function.apply("abc"));

        /*断定型接口Predicate<T>  参数类型T, 返回类型Boolean*/
        Predicate<String> predicate = s -> s.isEmpty();
        System.out.println(predicate.test(""));

        /*消费性接口Consumer<T>  参数类型T, 返回值类型 void*/
        Consumer<String> consumer = s -> System.out.println(s);
        consumer.accept("小张");

        /*供给型接口 Supplier<T> ,参数类型 无 返回值类型 T*/
        Supplier<String> supplier = () -> "123";
        System.out.println(supplier.get());


    }
}

class User implements Serializable {
    private Integer id;
    private String name;
    private Integer age;

    public User() {
    }

    public User(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
           
四大函数式接口以及Stream流
具体方法参考JDK8的官方文档

继续阅读