博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java8新特性03 Lambda表达式
阅读量:5086 次
发布时间:2019-06-13

本文共 2130 字,大约阅读时间需要 7 分钟。

一. Lambda表达式概述

Lambda表达式是Java8中最大的变化。它允许我们将一个函数当作方法的参数,或者说把一段代码当作数据使用。很多基于JVM平台的语言一开始就支持Lambda表达式,比如Scala,但是Java语言一直只能使用匿名内部类来替代Lambda表达式,直到Java8才使用Lambda表达式。

二.定义

Lambda表达式是一个匿名函数,它是一个函数式接口的具体实现方式;使用Lambda语法可以用来代替Java8之前的匿名内部类,从而简化代码。

任意只包含一个抽象方法的接口(函数式接口),我们都可以用来做成Lambda表达式;

三. Lambda表达式语法结构

包含三个部分

(1)参数:一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;

(2)箭头:->

(3)方法体:一个方法体,可以是表达式和代码块,方法体是函数式接口里面方法的实现,如果Lambda的功能语句块太复杂,我们可以使用大括号包起来,跟普通的Java方法一样;

总体结构如下:(parameters)->expression或者(parameters)->{statements;}

四. 具体使用

1 package com.test.a; 2  3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.List; 7  8 public class Test { 9 10     public static void main(String args[]) {11         List
list=new ArrayList
();12 list.add("d");13 list.add("a");14 list.add("c");15 list.add("b");16 17 //法一18 // Collections.sort(list, new Comparator
() {19 //20 // @Override21 // public int compare(String o1, String o2) {22 // // TODO Auto-generated method stub23 // return o1.compareTo(o2);24 // }25 // 26 // });27 28 //法二29 // Collections.sort(list, (String o1,String o2)->o1.compareTo(o2));30 //法三31 Collections.sort(list, (String o1,String o2)->{
return o1.compareTo(o2);});32 for(String a:list)33 {34 System.out.println(a);35 }36 }37 }
View Code
1 a2 b3 c4 d
View Code

note: 上面的String o1也可以不加String, jvm会自己解析;一句话也可以用大括号代替,但是必须是完整的语句

 举例:自定义函数式接口,并用Lambda表达式

1 package com.test.a;2 3 @FunctionalInterface4 public interface MyFunction {5 6     public abstract String f();7     8 }
View Code
1 package com.test.a; 2  3 public class Test { 4     public static void main(String args[]) { 5  6         MyFunction myFunction = () -> ("hello"); 7         String aString = myFunction.f(); 8         System.out.println(aString); 9     }10 }11 12 13 hello
View Code

 

转载于:https://www.cnblogs.com/Hermioner/p/9662008.html

你可能感兴趣的文章
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>