首页 > 编程语言 >JUC并发编程学习(十一)四大函数式接口(必备)

JUC并发编程学习(十一)四大函数式接口(必备)

时间:2023-11-05 12:34:04浏览次数:29  
标签:Function JUC return 函数 必备 编程 接口 简化 str

四大函数式接口(必备)

程序员:泛型、反射、注解、枚举

新时代程序员:lambda表达式、链式编程、函数式接口、Stream流式计算

函数式接口:只有一个方法的接口

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

//@FunctionalInterface 函数式接口,超级多
//简化编程模型,在新版本的框架中大量应用!
//foreach(消费者类的函数式接口)

四大函数式接口:Consumer、Function、Predicate、Supplier

Function

  • Function 函数式接口 R apply(T t); 输入一个T类型的参数,返回一个R类型的值
  • 只要是函数式接口都可以用lambda表达式简化

简化前:

Function ft = new Function<String,String>() {
    @Override
    public String apply(String str) {
        return str;
    }
};

简化后:

Function ft = (str)->{return str;};

更加简化后:

Function ft = str->{return str;};

Predicate

  • Predicate 断定型接口 有一个输入参数,返回类型只能是boolean值

  • 同样是一个函数式接口,可以简化

    简化前:

    Predicate<String> pr = new Predicate<String>() {
        @Override
        public boolean test(String str) {
            return str.isEmpty();
        }
    };
    

    简化后:

    Predicate<String> pr = str ->{return str.isEmpty();};
    

Comsumer

  • Comsumer 消费者接口 有一个输入参数,没有返回值
  • 同样可以简化

简化前:

Consumer<String> stringConsumer = new Consumer<>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
};

简化后:

Consumer<String> stringConsumer = str ->{
    System.out.println(str);
};

Supplier

  • Supplier 供给者接口 没有参数只有一个返回值
  • 同样可以简化

简化前:

Supplier<String> stringSupplier = new Supplier<>() {
    @Override
    public String get() {
        return "我的世界";
    }
};

简化后:

Supplier<String> stringSupplier = ()->{return "我的世界";};

标签:Function,JUC,return,函数,必备,编程,接口,简化,str
From: https://www.cnblogs.com/nhgtx/p/17806018.html

相关文章

  • 实验2 类和对象_基础编程2
    实验任务1demo1.dev方法一#ifndefT_H#defineT_H#include<iostream>#include<string>usingnamespacestd;//类T的声明classT{public:T(intx=0,inty=0);//带有默认形值的构造函数T(constT&t);//复制构造函数T(T&&......
  • 19.网络编程之网络基础概念
    19.网络编程之网络基础概念学习目标了解OSI七层、TCP/IP四层模型结构了解常见网络协议格式掌握网络字节序和主机字节序之间的转换(大端法和小端法)说出TCP服务器端通信流程说出TCP客户端通信流程独立写出TCP服务器端代码独立写出TCP客户端代码1.网络基础概......
  • 【教3妹学编程-算法题】使数组变美的最小增量运算数
    2哥 :3妹,脸上的豆豆好了没呢。3妹:好啦,现在已经没啦2哥 :跟你说很快就会消下去的,还不信~既然你的容颜和心情都如此美丽,那我们就再做一道关于美丽的题吧。3妹:切,2哥就会取笑我,伤心时让我做题,开心时也让我做题! 1题目: 给你一个下标从0开始、长度为n的整数数组nums,和一个整......
  • 有趣的Java之网络多线程——UDP编程
    UDP编程通信基本介绍类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能安全送到目的地,也不确信什么时候可以抵达。DatagramPacket对象封装了UDP数据报,在数据报中包含了发......
  • 一文读懂ReentrantLock在多线程编程中的作用和优点
    引言在当今这个数字化时代,软件开发已经离不开多线程编程。但是,多线程编程也带来了一系列复杂性和挑战,其中最关键的一个问题就是线程同步和互斥。为了应对这个问题,Java语言提供了一些工具,其中最强大的工具之一就是ReentrantLock。本文将对ReentrantLock进行深入探讨,介绍它在多线程编......
  • JUC并发编程学习笔记(十)线程池(重点)
    线程池(重点)线程池:三大方法、七大参数、四种拒绝策略池化技术程序的运行,本质:占用系统的资源!优化资源的使用!->池化技术(线程池、连接池、对象池......);创建和销毁十分消耗资源池化技术:事先准备好一些资源,有人要用就拿,拿完用完还给我。线程池的好处:1、降低资源消耗2、提高相......
  • 深入研究synchronized:解锁高效多线程编程的秘诀
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java的多线程编程里,让多个线程能够安全、高效地协同工作是非常重要的。而synchronized这个关键字,就是一个很重要的工具,可以帮助我们实现多线程同步。本文会深入讨论synchronized的作用、使用方法、工作原理,以及它和其他锁机制的比......
  • 《Unix/Linux系统编程》第五章学习笔记
    《Unix/Linux系统编程》第五章学习笔记第五章定时器及时钟服务本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于Intelx86的PC中的硬件定时器;讲解了CPU操作和中断处理;描述了Linux中与定时器相关的系统调用、库函数和定时器服务命令;探讨了进程间隔定时器、定......
  • 编程应该拥有诗意
         面向对象的有趣现象编程应该拥有诗意 毕竟是一门高级艺术就应该享受其中有形对象:一切看得见的皆对象无形对象:例如:股票.网络.思想.气候……我们把所有客观世界中的对象,在计算中映射出来,是一件伟大的事情  于是我们开始了愉快的开发体验…我们把应用程序规范......
  • Shell的基本操作和编程入门
    操作:1)给变量赋值,练习echo命令,做下面这个题目:安装中文输入环境:http://rpm.pbone.net  选择第二个,点击右键,复制地址: 按顺序输入下面的命令:     安装完成后,输入zhcon,进入中文输入环境 a)把自己的名字赋值给变量name,把"是"赋值给变量is,把自己的班级名称......