美文网首页
函数式接口

函数式接口

作者: arkliu | 来源:发表于2022-12-17 08:48 被阅读0次

Function函数式接口

image.png
Function function = new Function<String, String>() {

    @Override
    public String apply(String str) {
        return str;
    }
};

// 使用lamba简化
function = (str)->{
    return str;
};
System.out.println(function.apply("123"));

Predicate断定型接口

image.png
Predicate<String> predicate = new Predicate<String>() {

    @Override
    public boolean test(String str) {
        return str.isEmpty();
    }
};

predicate = (str)->{
    return str.isEmpty();
};
System.out.println(predicate.test("33")); // false
System.out.println(predicate.test("")); // true

Consumer消费型接口

image.png
Consumer<String>consumer = new Consumer<String>() {

    @Override
    public void accept(String str) {
        System.out.println(str);
    }
};

consumer = (str)->{System.out.println(str);};
consumer.accept("hello world..");

供给型接口

image.png
Supplier<String> supplier = new Supplier<String>() {

    @Override
    public String get() {
        return "supper a str";
    }
};

supplier = ()->{return "supper a str by lambda";};
System.out.println(supplier.get());

stream流式计算

package com.test.fun;

import java.util.Arrays;
import java.util.List;

public class Fun4 {

    public static void main(String[] args) {
        User u1 = new User(1, "aa", 21);
        User u2 = new User(2, "bb", 22);
        User u3 = new User(3, "cc", 23);
        User u4 = new User(4, "dd", 24);
        User u5 = new User(5, "ee", 25);
        User u6 = new User(6, "ee", 26);
        /**
         * 筛选:
         * 1. id必须是偶数
         * 2. 年龄必须大于23岁
         * 3. 用户名转为大写字母
         * 4. 用户名字母倒着排序
         * 5. 只输出一个用户
         */
        List<User> list = Arrays.asList(u1, u2, u3, u4, u5, u6);
        list.stream().filter((u)->{return u.getId()% 2==0;})
                     .filter((u)->{return u.getAge() > 23;})
                     .map(u->{return u.getName().toUpperCase();})
                     .sorted((uu1, uu2)->{return uu2.compareTo(uu1);})
                     .limit(1)
                     .forEach(System.out::println);
    }

}

class User {
    private int id;
    private String name;
    private int age;
    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

相关文章

  • java基础-day23-函数式接口和Stream流

    函数式接口和Stream 1. 函数式接口 1.1 函数式接口概述 1.2 常用函数式接口 1.3 比较器函数式接...

  • 2020-07-04【函数式接口】

    函数式接口概述 函数式接口作为方法的参数 函数式接口作为方法的返回值 常见的函数式接口 Supplier接口 Co...

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • 函数式接口

    函数式接口 一、函数式接口的定义   函数式接口:函数式接口中有且仅有一个抽象方法,这个抽象方法的意义在于表达某种...

  • 测验:函数式接口

    下面哪些接口是函数式接口? 答案:只有Adder是函数式接口。SmartAdder不是函数式接口,因为它定义了两个...

  • Java8系列:神奇的函数式接口

    01 函数式接口是什么? 有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambd...

  • 函数式接口和Lambda表达式深入理解

    0x00 函数式接口 前面讲了一下函数式接口,不过可能只是讲了个大概,大致讲了一下什么是函数式接口 函数式接口就是...

  • java8函数式接口

    一、函数式接口 1、函数式接口在java中是指:有且仅有一个抽象方法的接口,函数式接口,即适用于函数式编程场景的接...

  • Java 8 知多少

    一、函数式接口 函数式接口的定义: 函数式接口(Functional Interface)就是一个有且仅有一个抽象...

  • Java lambda表达式

    1. Java函数式接口 Java实现函数式编程的方式是函数式接口(functional interface),函...

网友评论

      本文标题:函数式接口

      本文链接:https://www.haomeiwen.com/subject/cdbsxdtx.html