首页 > 其他分享 >2022.11.11 函数式接口

2022.11.11 函数式接口

时间:2022-11-11 14:01:20浏览次数:57  
标签:11 Predicate 17 author 接口 authors 方法 2022.11

5. 函数式接口

5.1 概述

只有一个抽象方法的接口我们称之为函数接口。

JDK的函数式接口都加上了@FunctionalInterface (与重写方法的注解作用类似,校验作用) 注解进行标识。但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口。

 

5.2 常见函数式接口

  • Consumer 消费接口

    根据其中抽象方法的参数列表和返回值类型知道,我们可以在方法中对传入的参数进行消费。

     

     

  • Function 计算转换接口

    根据其中抽象方法的参数列表和返回值类型知道,我们可以在方法中对传入的参数计算或转换,把结果返回

     

     

  • Predicate 判断接口

    根据其中抽象方法的参数列表和返回值类型知道,我们可以在方法中对传入的参数条件判断,返回判断结果

     

     

  • Supplier 生产型接口

    根据其中抽象方法的参数列表和返回值类型知道,我们可以在方法中创建对象,把创建好的对象返回

 

 

 

5.3 常用的默认方法

  • and

    我们在使用Predicate接口时候可能需要进行判断条件的拼接。而and方法相当于是使用&&来拼接两个判断条件

    例如:

    打印作家中年龄大于17并且姓名的长度大于1的作家。

             List<Author> authors = getAuthors();
             Stream<Author> authorStream = authors.stream();
             authorStream.filter(new Predicate<Author>() {
                 @Override
                 public boolean test(Author author) {
                     return author.getAge()>17;
                }
            }.and(new Predicate<Author>() {
                 @Override
                 public boolean test(Author author) {
                     return author.getName().length()>1;
                }
            })).forEach(author -> System.out.println(author));
  • or

    我们在使用Predicate接口时候可能需要进行判断条件的拼接。而or方法相当于是使用||来拼接两个判断条件。

    例如:

    打印作家中年龄大于17或者姓名的长度小于2的作家。

     //        打印作家中年龄大于17或者姓名的长度小于2的作家。
             List<Author> authors = getAuthors();
             authors.stream()
                    .filter(new Predicate<Author>() {
                         @Override
                         public boolean test(Author author) {
                             return author.getAge()>17;
                        }
                    }.or(new Predicate<Author>() {
                         @Override
                         public boolean test(Author author) {
                             return author.getName().length()<2;
                        }
                    })).forEach(author -> System.out.println(author.getName()));

     

  • negate

    Predicate接口中的方法。negate方法相当于是在判断添加前面加了个! 表示取反

    例如:

    打印作家中年龄不大于17的作家。

     //        打印作家中年龄不大于17的作家。
             List<Author> authors = getAuthors();
             authors.stream()
                    .filter(new Predicate<Author>() {
                         @Override
                         public boolean test(Author author) {
                             return author.getAge()>17;
                        }
                    }.negate()).forEach(author -> System.out.println(author.getAge()));
  •  

标签:11,Predicate,17,author,接口,authors,方法,2022.11
From: https://www.cnblogs.com/shanzha/p/16880269.html

相关文章

  • 2022.11.11 方法引用与lambda并行流
    6.方法引用我们在使用lambda时,如果方法体中只有一个方法的调用的话(包括构造方法),我们可以用方法引用进一步简化代码。6.1推荐用法我们在使用lambda时不需要考虑什么时......
  • 2022.11.11 Lambda表达式
    2.Lambda表达式2.1概述Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关......
  • 2022.11.11 Stream流
    3.Stream流3.1概述Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。 3.......
  • 2022.11.11 Optional
    4.Optional4.1概述我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。例如: Authorauthor=getAuthor(); if(author!=n......
  • 1. 演进、环境与资源-20221111
    C++11也叫2.0了解:之前std:tr1的内容都已经放到std内了搜索:   :Gcc:unix家族,MinGW:windows家族   选择支持C++11还是14:【右击项目】–【选择属性】–【C/C++......
  • Java--comparator接口与Comparable接口的区别
    1.Comparator和Comparable相同的地方他们都是java的一个接口,并且是用来对自定义的class比较大小的,什么是自定义class:如publicclassPerson{Stringname;int......
  • Java集合Map接口与Map.Entry学习
    Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/valuepairs)。该接口描述了从不重复的键到值的映射。(1)添加、删除操作:Objectput(Objectkey......
  • SQL Server 注册C# 程序集调用Web Service接口报LoadFrom()、 LoadFile()、 Load(byte
    微软官方给的原因:官方给的解决方案    生成器工具(Sgen.exe)使用方式 官网文档 https://learn.microsoft.com/zh-cn/dotnet/standard/serialization......
  • CS1752 无法嵌入互操作类型“XXXXClass“。请改适用的接口
    在打开.Net项目时应用其他库有的提示这个问题,这个原因是由于引入的属性中,有一个“嵌入操作类型”设置 设置为false即可。......
  • 11:高级部分-MySQL
    目录​​(一)view视图​​​​1.开场​​​​2.view视图创建、使用以及作用​​​​3.显示视图​​​​4.更新和删除视图​​​​5.视图算法:temptable,merge​​​​(......