让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)

简介: 本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。

package unittest;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

@FunctionalInterface
interface IFuction1

{
public abstract P uppCase();
}
@FunctionalInterface
interface IFuction2

{
public abstract P uppCase(P p);
}
@FunctionalInterface
interface IFuction3{
public abstract R trans(P p);
}
public class TestLocal{
public static void main(String[] args) {
//利用方法引用的概念可以位一个方法定义多个名字,但是要求必须是函数式接口.

    IFuction1<String> ifunction1  = "avc" :: toUpperCase;//    public String toUpperCase() {
    String str1 = ifunction1.uppCase();//实例对象::普通方法(不带参数)
    System.out.println(str1);

    IFuction2<String> ifunction2  = String :: toUpperCase; //    public String toUpperCase() {
    String str2 = ifunction2.uppCase("avc");//类名称::普通方法(带参数)
    System.out.println(str2);

    IFuction3<Integer,String> ifunction3  = String :: valueOf;//类名称::static方法(带参数) //    public static String valueOf(int i) {
    String str3 = ifunction3.trans(123456);
    System.out.println(str3.length());
    //内建函数式接口
    //1.功能型内建函数式接口:有参数 有返回值
    Function<String,Boolean> fun = "abc123"::startsWith;
    System.out.println("1功能型内建函数式接口:" + fun.apply("abc"));

    //2.消费型内建函数式接口:有参数 无返回值
    Consumer<String> con = System.out::println;
    con.accept("2消费型内建函数式接口:avc");
    //3.供给型内建函数式接口:无参数 有返回值
    Supplier<String> supplier = "abc"::toUpperCase;
    System.out.println("3供给型内建函数式接口:" + supplier.get());
    //4.断言型内建函数式接口:无参数 有返回值
    Predicate<String> predicate = String::isEmpty;
    System.out.println("4断言型内建函数式接口:" + predicate.test("a"));

    Predicate<String> fun_predicate = "abc123"::startsWith;
    System.out.println("5功能_断言型内建函数式接口:" + fun_predicate.test("abc"));
}

}

目录
相关文章
|
22天前
|
Java
Java8函数式编程
Java8函数式编程
24 2
|
1月前
|
Java
让星星⭐月亮告诉你,自定义定时器和Java自带原生定时器
定时器是一种可以设置多个具有不同执行时间和间隔的任务的工具。本文介绍了定时器的基本概念、如何自定义实现一个定时器,以及Java原生定时器的使用方法,包括定义定时任务接口、实现任务、定义任务处理线程和使用Java的`Timer`与`TimerTask`类来管理和执行定时任务。
45 3
|
6天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
6天前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
17 4
|
10天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
19天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
15 0
[Java]静态代理与动态代理(基于JDK1.8)
|
1月前
|
机器学习/深度学习 算法 搜索推荐
让星星⭐月亮告诉你,Java冒泡排序及其时间复杂度计算
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换位置,将较小的元素逐步移至数组前端。第一轮结束后,最小值会位于首位;第二轮则将次小值置于第二位,依此类推。经过 (n-1) 轮遍历后,数组完成排序。冒泡排序的时间复杂度为 O(n²),在最优情况下(已排序数组)时间复杂度为 O(n)。示例代码展示了如何实现冒泡排序。
49 1
|
2月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
293 3
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
57 1
|
3月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
685 4