首页 > 编程语言 >【JAVA】函数式接口示例

【JAVA】函数式接口示例

时间:2024-02-22 11:44:46浏览次数:38  
标签:Predicate JAVA 示例 System 接口 Supplier println public out

 

Java的函数式接口提供了更简洁和声明性的方式来处理数据。以下是一些使用Predicate<T>Function<T, R>Consumer<T>Supplier<T>的代码示例

 

Predicate(谓词语句)

import java.util.function.Predicate;

public class PredicateExample {
    public static void main(String[] args) {
        // 创建一个Predicate用于判断字符串长度是否大于5
        Predicate<String> stringLengthCheck = (s) -> s.length() >= 5;

        // 使用Predicate测试字符串
        System.out.println(stringLengthCheck.test("Hello"));  // 输出:true
        System.out.println(stringLengthCheck.test("Hi"));     // 输出:false

        // 可以将多个Predicate通过逻辑运算组合起来
        Predicate<String> startsWithA = s -> s.startsWith("A");
        Predicate<String> containsB = s -> s.contains("B");

        // 逻辑与操作
        Predicate<String> combinedPredicate = startsWithA.and(containsB);

        System.out.println(combinedPredicate.test("AppleBanana")); // 输出:true
        System.out.println(combinedPredicate.test("An Apple"));   // 输出:false
        System.out.println(combinedPredicate.test("A Banana"));   // 输出:true
    }
}

 

Function<T, R>(转换或映射)

import java.util.function.Function;

public class FunctionExample {
    public static void main(String[] args) {
        // 创建一个Function,用于将字符串转为大写
        Function<String, String> toUpperCase = String::toUpperCase;

        // 应用Function到输入值上
        String input = "hello world";
        String output = toUpperCase.apply(input);
        System.out.println(output); // 输出:HELLO WORLD

        // 更复杂的转换,例如将字符串转换为整数并计算平方
        Function<String, Integer> stringToInt = Integer::parseInt;
        Function<Integer, Integer> square = num -> num * num;

        Integer result = square.compose(stringToInt).apply("10");
        System.out.println(result); // 输出:100
    }
}

 

Consumer(消费型接口,接收一个参数,无返回值)

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class ConsumerExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 创建一个Consumer,用于打印列表中的元素
        Consumer<String> printer = name -> System.out.println(name);

        // 对列表中的每个元素应用Consumer
        names.forEach(printer); 
        // 输出:
        // Alice
        // Bob
        // Charlie
    }
}

 

Supplier(供应者接口,无参数,产生一个结果)

import java.util.function.Supplier;

public class SupplierExample {
    public static void main(String[] args) {
        // 创建一个Supplier,用于生成随机数
        Supplier<Integer> randomNumber = () -> (int)(Math.random() * 100);

        // 调用Supplier获取结果
        int number = randomNumber.get();
        System.out.println(number); // 每次运行可能输出不同的随机数(0-99之间)

        // 或者创建一个简单的返回固定字符串的Supplier
        Supplier<String> greeting = () -> "Hello, World!";
        System.out.println(greeting.get()); // 输出:Hello, World!
    }
}

 

标签:Predicate,JAVA,示例,System,接口,Supplier,println,public,out
From: https://www.cnblogs.com/cuipengchong/p/18026977

相关文章

  • Javamis 监控管理 - 服务监控模块开发过程详述(超详细图文说明)
    文章目录一、第一章、为什么要研发[服务监控]功能模块二、第二章、[服务监控]功能模块开发过程2.1.、引入依赖包2.2、开发过程2.2.1、实体类2.2.2、控制层类2.2.3、页面展示   前言    本来想着等待javamis低......
  • JAVA 学习路线
    1.首先是java基础(常用类,集合和IO)2.其次就是GUI编程3.学习网络编程和多线程基础4.对注解和反射进行了解5.有兴趣可以学习JVM(JUC并发编程以后再看)6.html5和CSS3和JS适当了解7.MYSQL数据库重点 Javaweb基础一定打好 这两个非常重要8.mybatis框架spring5和springmvc框......
  • 关于Golang中函数的接收者不同对接口的使用的影响理解
    对于函数而言:接收者为指针会改变接收者本身的值接收者为值则只是拷贝,不会改变原本的值并且值和指针可以任意调用对方的方法,即值可以调用接收者为指针的方法,指针可以调用接收者为值得方法。原因是:可以自动指针解引用和值寻址对于接口而言:接收者为指针的方法,不能将值赋值给接......
  • 【Java】反应式编程 之 Mono.defer与Mono.just
    Mono.defer方法创建数据源属于懒汉型,Mono.just方法创建数据源属于恶汉型,下面看一个例子:packagecom.example.demo;importorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;importreactor.core.publisher.Mono;importjava.util......
  • 05-JavaScript基础语法
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JS-基础语法</title></head><body></body><script>//输出语句//1.alert()弹出警告框aler......
  • java中Helloworld!
    java第一个程序,“你好世界”建立第一个程序文件名为:HelloWorld.java如下展示点击查看代码publicclassHelloWorld{ publicstaticvoidmain(String[]args){ system.out.print("HelloWorld!"); }}注意:java类名必须和文件名一致,然后进行文件编译和运行在DOS窗口运......
  • Html示例-表格表头固定+首尾列固定
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><style>.table_wrap{width:100%;height:200px;overflow:auto;......
  • 软件无线电处理平台设计方案:330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口
    一、板卡概述     本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXIE标准协议,其中XJ3标准高速差分接口,支持PCIeX 2。软件具有windows,Linux驱动。二、功能和技术......
  • 【性能测试】java性能问题排查提效脚本工具
    本文主要讲述针对cpu高耗和网络IO瓶颈两个场景,使用排查提效脚本工具快速定位分析性能瓶颈场景一:当服务器CPU高耗原因分析,如何快速定位到占用cpu高的用户线程top命令找出消耗CPU高的Java进程及其线程id:开启线程显示模式(top-H,或是打开top后按H)按CPU使用率排序(top缺省是按CPU......
  • 若依+vue3配置菜单后设置缓存但实际上切换页签重复请求接口
    刚接触ruoyi,配置菜单时发现一个问题,配置好了,也设置了缓存,但是切换tab页签还是会重复请求接口,配置如图:仅是举例,如上图,系统管理->角色管理列表配置,路由地址是role,缓存也勾选了,但实际上第一次打开角色管理页签第一次请求了数据,再跳转其他页面,回到角色管理页签时,又一次请求了数据,实......