当前位置: 首页 > news >正文

Java:数据结构-Lambda表达式

Lambda表达式

lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。

Lambda表达式的基本语法:

(parameters) -> expression 或 (parameters) ->{ statements; }

函数式接口

定义:如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口

 interface NoParameterNoReturn {//注意:只能有一个抽象方法void test();}

因为还是一个抽象方法,所以这个也是可以的 

interface NoParameterNoReturn {void test();default void test2() {System.out.println("--------");}}

 

Lambda表达式的基本使用

1.无返回值无参数

//无返回值无参数
@FunctionalInterface
interface NoParameterNoReturn {void test();
}
public class lambdaTest {public static void main(String[] args) {NoParameterNoReturn noParameterNoReturn=new NoParameterNoReturn() {@Overridepublic void test() {System.out.println("重写test方法");}};System.out.println("------------");NoParameterNoReturn noParameterNoReturn1=()-> System.out.println("重写test方法");noParameterNoReturn1.test();}

2.无返回值一个参数

//无返回值一个参数
@FunctionalInterface
interface OneParameterNoReturn {void test(int a);
}
public class lambdaTest {public static void main(String[] args) {OneParameterNoReturn oneParameterNoReturn=new OneParameterNoReturn() {@Overridepublic void test(int a) {System.out.println(a);}};//OneParameterNoReturn oneParameterNoReturn1=(int a)-> System.out.println(a);OneParameterNoReturn oneParameterNoReturn1=a-> System.out.println(a);oneParameterNoReturn1.test(15);}

 3.无返回值多个参数

//无返回值多个参数
@FunctionalInterface
interface MoreParameterNoReturn {void test(int a,int b);
}
public class lambdaTest {public static void main(String[] args) {MoreParameterNoReturn moreParameterNoReturn=new MoreParameterNoReturn() {@Overridepublic void test(int a, int b) {System.out.println(a+b);}};//MoreParameterNoReturn moreParameterNoReturn1=(int a,int b)-> {System.out.println(a+b);};MoreParameterNoReturn moreParameterNoReturn1=(a,b)-> System.out.println(a+b);moreParameterNoReturn1.test(5,4);}

4.有返回值无参数

//有返回值无参数
@FunctionalInterface
interface NoParameterReturn {int test();
}
public class lambdaTest {public static void main(String[] args) {NoParameterReturn noParameterReturn=new NoParameterReturn() {@Overridepublic int test() {return 0;}};//NoParameterReturn noParameterReturn1=()->{return 10;};NoParameterReturn noParameterReturn1=()->10;System.out.println(noParameterReturn1.test());}

5.有返回值一个参数

//有返回值一个参数
@FunctionalInterface
interface OneParameterReturn {int test(int a);
}
public class lambdaTest {public static void main(String[] args) {OneParameterReturn oneParameterReturn=new OneParameterReturn() {@Overridepublic int test(int a) {return 0;}};//OneParameterReturn oneParameterReturn1=(int a)->{return a;};OneParameterReturn oneParameterReturn1=(a)->a;System.out.println(oneParameterReturn.test(10));}

6.有返回值多参数

//有返回值多参数
@FunctionalInterface
interface MoreParameterReturn {int test(int a,int b);
}
public class lambdaTest {public static void main(String[] args) {MoreParameterReturn moreParameterReturn=new MoreParameterReturn() {@Overridepublic int test(int a, int b) {return a+b;}};//MoreParameterReturn moreParameterReturn1=(int a,int b)->{return a/b;};MoreParameterReturn moreParameterReturn1=(a,b)->a/b;System.out.println(moreParameterReturn1.test(15, 5));}

Lambda在集合当中的使用

对应的接口新增的方法
CollectionremoveIf() spliterator() stream() parallelStream() forEach()

List

replaceAll() sort()
MapgetOrDefault() forEach() replaceAll() putIfAbsent() remove() replace() computeIfAbsent() computeIfPresent() compute() merge()

List接口

public class lambdaTest {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("abcd");list.add("zko");list.add("hello");list.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});System.out.println("=========");list.forEach(s -> System.out.println(s));System.out.println("=====排序====");/*list.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});*/list.sort((o1,o2) -> o1.compareTo(o2));list.forEach(s -> System.out.println(s));}

Map接口

public class lambdaTest {public static void main(String[] args) {HashMap<String,Integer> map = new HashMap<>();map.put("hello",3);map.put("abc",5);map.put("def",2);/*map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String s, Integer integer) {System.out.println("key: "+s +" val: "+integer);}});*/map.forEach((key,val)->System.out.println("key: "+key +" val: "+val));}

 希望能对大家有所帮助!!!!


http://www.mrgr.cn/news/68314.html

相关文章:

  • 物流公司常用货物跟踪物流单打印查询统计软件操作教程
  • TDengine 签约蘑菇物联,改造通用设备工业互联网平台
  • 别名路径联想设置
  • 如何找到捏蛋糕和修牛蹄类型的解压视频素材?
  • 测试开发面试题记录
  • std::copy
  • 【SAP-PP】 简单的COGI锁定报错,设置JOB自动执行
  • 使用ThorUi
  • 你真的了解Canvas吗--解密十四【ZRender篇】
  • SAP ABAP开发学习——登录语言问题
  • 高性能Web网关:OpenResty 基础讲解
  • try-catch性能详解!
  • web信息收集
  • ./bin/mindieservice_daemon启动成功
  • React.lazy() 懒加载
  • ZeRO:用来优化万亿参数模型训练的内存
  • CRM与SCRM的区别与联系全面解析
  • 第2章2.3立项【硬件产品立项的核心内容】
  • 操作系统-实验报告单(2)
  • 基于java+SpringBoot+Vue的教学资源库系统设计与实现
  • 使用vuex动态设置全局字号
  • Java[面试题]-真实面试2.0
  • 【NLP自然语言处理】深入探索Self-Attention:自注意力机制详解
  • 纹理分析——模型分析方法
  • 大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
  • 【H2O2|全栈】阶段常见面试题(二)【万字大长篇】