首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2023-02-08 14:22:25浏览次数:46  
标签:list List item static forEach public 表达式 Lambda

Lambda表达式

可以简单的理解为可传递的的匿名函数的一种方式,可以使用在函数式接口上,包含参数列表,函数体,返回类型,异常列表

基本语法:

// 标准写法
(parameters) -> { expression; }

// 函数体只有一行时,可以省略花括号
(parameters) -> expression
    
// 参数列表只有一个时,可以省略小括号
parameter -> expression

函数式接口

定义:函数式接口就是只定义一个抽象方法的接口(可以定义默认方法)

Lambda表达式可以为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例

Runnable runnable1 = () -> System.out.println("Hello World1");
Runnable runnable2 = new Runnable() {
	@Override
	public void run() {
		System.out.println("Hello World2");
    }
};

runnable1.run();
runnable2.run();

常用的函数式接口

Predicate

java.util.function.Predicate

Predicate接口定义了一个名叫test的抽象方法,它接受泛型T对象,并返回一个boolean

// 使用示例
public static void main(String[] args) {
    List<String> list = Arrays.asList("斫峰之刃", "薙草之稻光", "四风原典", "天空之卷", "狼的末路", "风鹰剑", "阿莫斯之弓", "终末嗟叹之诗", "若水", "雾切之回光");

    filter(list, weapon -> weapon.contains("之")).stream().forEach(System.out::println);
}

public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
    List<T> resultList = new ArrayList<>();
    list.stream().forEach(item -> {
        if (predicate.test(item)) {
            resultList.add(item);
        }
    });
    return resultList;
}
Consumer

java.util.function.Consumer

Consumer定义了一个名叫accept的抽象方法,它接受泛型T的对象,没有返回(void)

static List<String> list = Arrays.asList("斫峰之刃", "薙草之稻光", "四风原典", "天空之卷", "狼的末路", "风鹰剑", "阿莫斯之弓", "终末嗟叹之诗", "若水", "雾切之回光");

public static void main(String[] args) {
    forEach(list, System.out::println);
}

public static <T> void forEach(List<T> list, Consumer<T> consumer) {
    list.stream().forEach(item -> {
        consumer.accept(item);
    });
}
Function

java.util.function.Function<T, R>

Function接口定义了一个叫作apply的方法,它接受一个泛型T的对象,并返回一个泛型R的对象。

static List<String> list = Arrays.asList("斫峰之刃", "薙草之稻光", "四风原典", "天空之卷", "狼的末路", "风鹰剑", "阿莫斯之弓", "终末嗟叹之诗", "若水", "雾切之回光");

public static void main(String[] args) {
map(list, String::length).forEach(System.out::println);
}

public static <T, R> List<R> map(List<T> list, Function<T, R> function) {
List<R> resultList = new ArrayList<>();
list.forEach(item -> {
resultList.add(function.apply(item));
});
return resultList;
}

标签:list,List,item,static,forEach,public,表达式,Lambda
From: https://www.cnblogs.com/duya12345/p/17101537.html

相关文章

  • 19正则表达式
      用于定义各种模糊筛选规则。  查找空行:    指定开头是a,结尾是bash,中间任意:      查特殊字符出现文件,需要使用转义字符,并且用’‘引起来。......
  • Jmeter-后置处理器-json提取器(相对路径${..date})与正则提取器(万能表达式.*?)
    1、json提取器-相对路径以及多个参数(写默认值)  如果你的响应体为json格式,那么优先选用json提取器如果想要提前请求中内容、响应的头部内容、或者响应体格式非json格......
  • 正则表达式-(3)分组与引用
    括号在正则中的功能就是用于分组。简单来理解就是,由多个元字符组成某个部分,应该被看成一个整体的时候,可以用括号括起来表示一个整体,这是括号的一个重要功能。其实用括号括......
  • 正则表达式&&Java应用
    正则表达式​​10分钟快速掌握正则表达式​​​​Regex测试网站​​​​正则表达式30分钟入门教程​​正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法......
  • corn表达式
    corn表达式的值所处的位置不同,对应不同的时间单位,从左到右依次是:秒分时日月周年(其中年可以省略不写;周表示周一、周二等,与日相矛盾,使用时注意)*表示每一时间单位都......
  • Java中进行单元测试junit.Assert断言、Mockito模拟对象、verify验证模拟结果、Java8中
    场景Java8新特性-Stream对集合进行操作的常用API:​​Java8新特性-Stream对集合进行操作的常用API_霸道流氓气质的博客-博客_javalist.stream​​在上面使用流操作时需要用到......
  • JvavScript与java中的正则表达式的区别
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scripttype="text/javascript">/*1.JavaScript是部分匹......
  • Java中Lambda表达式基础及使用
    目录一、举例说明1、无参无返回1.1定义一个接口1.2接口实现类1.3测试类2、有参无返回代码示例3、有参有返回二、简单事项1、省略模式2、注意事项三、L......
  • 正则表达式基础
    <spanstyle="font-size:18px;">packagecn.itcast.test;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassDemo1{publicstaticvoidma......
  • python新手常见问题一:乱用表达式
    在函数参数中乱用表达式作为默认值Python允许给一个函数的某个参数设置默认值以使该参数成为一个可选参数。尽管这是这门语言很棒的一个功能,但是这当这个默认值是可变对象(mu......