首页 > 编程语言 >JAVA四大核心函数式接口

JAVA四大核心函数式接口

时间:2022-11-11 15:58:13浏览次数:30  
标签:Function Predicate return 函数 List 接口 JAVA public

Consumer接口

1.接口说明
Consumer接口是消费性接口,无返回值。Java8中对Consumer的定义如下所示。

@FunctionalInterface
public interface Consumer<T> {

    void accept(T t);

    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

2.使用示例

public void handlerConsumer(Integer number, Consumer<Integer> consumer){
    consumer.accept(number);
}
@Test
public void test1(){
    this.handlerConsumer(10000, (i) -> System.out.println(i));
}

Supplier接口

1.接口说明
Supplier接口是供给型接口,有返回值,Java8中对Supplier接口的定义如下所示。

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

2.使用示例

public List<Integer> getNumberList(int num, Supplier<Integer> supplier){
    List<Integer> list = new ArrayList<>();
    for(int i = 0; i < num; i++){
        list.add(supplier.get())
    }
    return list;
}

@Test
public void test2(){
    List<Integer> numberList = this.getNumberList(10, () -> new Random().nextInt(100));
    numberList.stream().forEach(System.out::println);
}

Function接口

1.接口说明
Function接口是函数型接口,有返回值,Java8中对Function接口的定义如下所示。

@FunctionalInterface
public interface Function<T, R> {

    R apply(T t);

    default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
        Objects.requireNonNull(before);
        return (V v) -> apply(before.apply(v));
    }

    default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
        Objects.requireNonNull(after);
        return (T t) -> after.apply(apply(t));
    }

    static <T> Function<T, T> identity() {
        return t -> t;
    }
}

2.使用示例

public String handlerString(String str, Function<String, String> func){
   return func.apply(str);
}

@Test
public void test3(){
   String str = this.handlerString("binghe", (s) -> s.toUpperCase());
   System.out.println(str);
}

Predicate接口

1.接口说明
Predicate接口是断言型接口,返回值类型为boolean,Java8中对Predicate接口的定义如下所示。

@FunctionalInterface
public interface Predicate<T> {

    boolean test(T t);

    default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }

    default Predicate<T> negate() {
        return (t) -> !test(t);
    }

    default Predicate<T> or(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) || other.test(t);
    }

    static <T> Predicate<T> isEqual(Object targetRef) {
        return (null == targetRef)
                ? Objects::isNull
                : object -> targetRef.equals(object);
    }
}

2.使用示例

public List<String> filterString(List<String> list, Predicate<String> predicate){
    List<String> strList = new ArrayList<>();
    for(String str : list){
        if(predicate.test(str)){
            strList.add(str);
        }
    }
    return strList;
}

@Test
public void test4(){
    List<String> list = Arrays.asList("Hello", "Lambda", "binghe", "lyz", "World");
    List<String> strList = this.filterString(list, (s) -> s.length() >= 5);
    strList.stream().forEach(System.out::println);
}

标签:Function,Predicate,return,函数,List,接口,JAVA,public
From: https://www.cnblogs.com/momoli/p/16880673.html

相关文章

  • 温故而知新——Java双列集合Map&Stream流
    总体目录:01-双列集合的特点02-Map集合常用的APIMap是顶层接口,常用方法如下:size()、isEmpty()、clear()方法容易理解;put()方法的细节:如果第一次添加元素,返回值为null......
  • Python函数与类
    某农带专业Python实验二公式计算题目描述:编写三个函数fz(n),fm(n),sum_(n)分别计算下列公式的分子和,分母积以及公式总和值。\[s=1+\frac{1+2}{1\times2}+\frac{1+......
  • 基于OpenJDK Alpine制作日常java基础镜像
    Dockerfile内容如下:FROMeclipse-temurin:8-jre-alpineMAINTAINERdevops([email protected])RUNapkupdate&&apk--no-cacheaddtzdatattf-dejavufontconfig......
  • C语言 函数03 函数的调用
    传值调用函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。传址调用传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。这种传参方......
  • java 填充word文件
    时序图代码实现publicFileDTOcreateNoticeLetter(NoticeConditioncondition){FileDTOres=null;Mapphilipp=getMap(condition);F......
  • 十大经典排序算法(Java)--正在更新。。
    十大经典排序算法(2022年11月11日更新)1、冒泡排序冒泡排序是接下来的十大排序中最简单的排序。1.1方法描述简单来说,排序方法就是重复地走过要排序的数列,一次比较相邻......
  • C# 浅谈 接口(Interface)的作用
    继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的1.接口用于描述一组类的公共方法/公共属性.它不实现任何的方法或属性,只是......
  • pytest--测试函数
    参考链接https://docs.python.org/zh-cn/3/reference/simple_stmts.html?highlight=assert#grammar-token-assert_stmt断言assert在pytest中,assert是编写测试的最基......
  • java通过cglib动态生成实体bean的操作
    转载自:https://www.jb51.net/article/205882.htm maven依赖:12345678910<dependency>      <groupId>commons-beanutils</groupId>   ......
  • Mysql数据库函数-单行函数
    一.单行函数:可以理解为向函数传入一个参数,返回一个值。单行函数是指对每一题记录输入值进行计算,并得到相应的计算结果,然后返回给用户,也就是说,每条记录作为一个输入参数,经......