小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Java函数式编程

Java,java 额外说明

收录于:23天前

从JDK8开始,Java支持函数式编程。函数式编程是一种面向数学的抽象,将计算描述为表达式求值。函数式程序是一个表达式。 JDK还提供了几个常用的函数接口。

Java中的函数式编程并不像JS那么规范和深刻。在函数式编程中,函数也是一等公民。它们可以作为参数传递、赋值、引用以及作为数据类型处理。 。

Consumer接口

Java Consumer接口来自Java 8中引入的 java.util.function包。

Consumer是一个功能接口,用来作为lambda表达式或方法引用的任务目标(传递一个参数执行特定的功能)。Consumer的功能接口是一个接受单一参数并且不返回任何结果的操作。Consumer的功能方法是accept(T t)andThen(Consumer consumer)

Consumer源码如下:
在这里插入图片描述

源码提供的两个方法的功能如下:

  • accept方法接受任意指定类型的输入参数;
  • andThen方法的参数和返回值都是表达式,用来执行某个功能。
import java.util.function.Consumer;

public class ConsumerTest {
    
    public static void main(String[] args) {
    

        //使用函数接口定义表达式,可复用的表达式
        Consumer<String> consumer = (String s)->{
    
            System.out.println(s);
        };

        consumer.accept("hello");
        
        consumer.accept("world");
    }


}

在这里插入图片描述

import java.util.function.Consumer;

public class ConsumerTest {
    
    public static void main(String[] args) {
    

        //使用函数接口定义表达式,可复用的表达式
        Consumer<String> consumer = (String s)->{
    
            System.out.println(s);
        };

        consumer.accept("hello");

        consumer.accept("world");

        //定义表达式簇
        Consumer<String> consumer1 = (String s) ->{
    
            String str = s.concat("连接一段时间!");
            System.out.println(str);
        };

        consumer.andThen(consumer1).accept("hello");

    }


}

在这里插入图片描述

Lambda表达式

public class ConsumerTest {
    
    public static void main(String[] args) {
    
        //lambda表达式

        AddMethod addMethod = (int a,int b)->{
    
            return a+b;
        };
        System.out.println(addMethod.add(1,2));
    }


}

interface AddMethod{
    
    int add(int a,int b);
}

https://www.w3cschool.cn/article/65422543.html

双冒号::符号

::在Java里面也可以叫做方法引用,就上面说的函数也是一等公民,这里就类似把方法作为参数传入。lambda表达式都类似使用匿名类实现接口的方法,然而还有一种情况我们并不想要自己去实现接口的方法,只是想传进去一个已经有过实现了的方法,就可以使用::

例如在forEach方法中,参数是函数:
在这里插入图片描述

List<Integer> list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));

//lambda表达式
list.forEach((k)-> System.out.println(k));

语法规则如下:
类名::静态方法名 或者 类的实例::实例方法

常见的::的用法都在forEach方法中,另外参数是Consumer的也可以使用

public class Test3 {
    
    public static void main(String[] args) {
    
        List<String> list = new ArrayList();
        list.add("hello");
        list.add("world");
        list.add("yes");
        list.forEach(Person::printNA);
    }
}
class Person {
    

    public static void printNA(String name){
    
        System.out.println("姓名"+name);
    }
}

在这里插入图片描述

. . .

相关推荐

额外说明

设置全局异常拦截后,需要注意的一点小细节(笔记)

一、如何设置全局异常      ①SSM框架设置 首先在application.xml中配置相关的信息(注册) <!-- 配置全局异常处理类 --> <bean class="cn.linkpower.exception.GloablException"

额外说明

Swing中一些常用设置

最近几个月尽弄swing了,对于一些不是很常用的设计、配置用起来着实走了不少弯路啊,这里记录一下,免得再在同一个地方再摔倒。   1、设置窗口的图标 默认的Jframe左上角的图标时Java的咖啡杯图标,以下代码用来自定义图标: String logoF

额外说明

从功能测试到掌握自动化,四个月时间我是如何从点工进入互联网大厂

年关了,回望2021年,你的这个2021年收获咋样啦 各大招聘网站,测试工程师月薪一万以上基本都有一个必备技能,那就是自动化测试。那么自动化测试到底难不难呢?下面我将会将我的经历讲给大家听,希望听完后,大家会有自己的一个判断。 1、知识体系化 不知不觉,

额外说明

canvas对像素的操作&&实现图像灰度化处理&&实现马赛克效果

目录: 每篇前言~ canvas对像素的操作 1. .getImageData()方法和.putImageData()方法 2.实践——图像灰度化处理 3.实践——两种方法实现马赛克效果 第一种方法: 第二种方法: 每篇前言~ --作者介绍:【孤寒者】—

额外说明

Drag Your GAN论文解读,基于点的交互式操作拖动到生成图像[DragGAN]

只需要鼠标的点击就可以自动修图的产品,火爆问世,可以说是超越PS,神一般的存在了,而且没有门槛,对于普通大众来说直接可以上手使用,这个是PS完全不具备的。更关键的是,这款产品跟PS明显区别在于,PS一般来说是做美化处理为主,而Drag Your GAN可

额外说明

大数据整型的加减乘除

#include <iostream> #include <string> using namespace std; //相等返回0,大于返回1,小于返回-1 inline int compare(string str1,string str2) {

额外说明

python开发中的三目运算

def foo(arg): return arg if arg else None

额外说明

Windows下载安装zipkin

Zipkin 是由推特开发的分布式链路追踪系统,用于对 Sleuth 产生的日志加以收集并采用可视化的数据对链路追踪进行分析与图表展示,Zipkin 是典型的 C/S(客户端与服务端)架构模式,需要独立部署 Zipkin 服务器,同时也需要在微服务内部持

额外说明

WordPress 4.0中的新功能(功能和屏幕截图)

WordPress 4.0 Beta 1 于昨天发布。这是一个主要版本,具有一些非常酷的功能和改进。在本文中,我们将向您展示 WordPress 4.0 中的新功能及其屏幕截图。 WordPress 4.0 Beta 1 于昨天发布。这是一个主要版本,具

ads via 小工具