`
cakin24
  • 浏览: 1386345 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Lambda表达式的引入

    博客分类:
  • java
阅读更多

        Java 8的最大亮点之一是引入了Lambda。使用Lambda表达式,会使得设计的代码会更加简洁,且具有可读性。

        Lambda的解释:一个被定义的且可能被调用的函数或子程序,但其却没有像普通函数或子程序那样,拥有一个固定的标识符。Lambda的简单理解:是一个包含若干表达式和语句的匿名函数(方法)。

        在某些场合下,可能我们需要一个功能块,但又不想去命名一个函数或方法,此时Lambda就派上用场了。在Java 8中,Lambda表达式就是一个带有输入参数的可执行语句块,一个匿名的方法。

        当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。“函数式接口”是指:仅仅只包含一个抽象方法的接口,每一个该类型的Lambda表达式,都会被匹配到这个抽象方法。

        传统的创建线程的方法:

Runnable runnable1=new Runnable

{

    public void run

    {

        System.out.println("Running without Lambda");

    }

}

        如果使用Lambda表达式,其代码可以表示为:

Runnable runnable2=()->{

        System.out.println("Running withLambda");

};

        正如读者所看到的那样,使用Lambda表达式,可读性增强了,代码量也随之减少。

        Java 8中,定义一个Lambda表达式,简单来说,就是3条:

  • 方法无名
  • 参数可有
  • 箭头“->”分割

        格式如下:

(Type1 param1,Type2 param2,...TypeN paramN)->{

    语句1;

    语句2;

    语句3;

    return value;

}

    举例:用Lambda表示两个整数求和

    (int x,int y)->{return x+y;}

    对应上述三句简单的总结,详细解释说明如下:

  • 可把Lambda想象成一个没有名称的方法,该方法的参数列表(Type1 param1,Type2 param2,...TypeN paramN)和方法体{...},如同普通方法一样,这些都可以有;
  • 参数列表中的参数可有可无,如果无参数,就是一对空括号;
  • Lambda表达式不是普通方法,它有自己特殊的标记,就是一个箭头->,它用来分割参数和主体部分,主体部分用花括号{}括起来,它可以是一个表达式或一个语句块。

上面的Lambda表达式语法是完整版,写起来比较繁琐,根据不同的情况,Lambda表达式可以有各种简化版本。

<1>省略参数类型

在很多情况,编译器可从上下文中推断出Lambda的参数类型,格式简化如下:

(param1, param2,...paramN)->{

    语句1;

    语句2;

    语句3;

    return value;

}

计算两个数之和的例子,可用简化的Lambda,表示为:

(x,y)->{return x+y;}   //x和y的数据类型,可根据这条语句的上下文,自动推断得知。

<2> 省略参数表小括号

当Lambda表达式的参数只有一个时,可进一步省略参数表中的小括号,于是Lambda表达式可进一步简写为:

param1->{

    语句1;

    语句2;

    语句3;

    return value;

}

举例说明,如果求某个值x的平方,用Lambda表达式表示为:

x->{return x*x;}

<3>省略方法体大括号

当Lambda表达式只含有一条语句时,还可进一步省略方法体的大括号、return和语句结尾的分号。Lambda表达式简化为:

param1-> statement

再次用某个值x的平方,来举例说明,Lambda表达式可表示为:

x->x*x //箭头后面的是返回值x*x

 

Lambda表达式应用

1 代码示例

import java.util.*;
public class ListLambda {
	public static void main(String[] args){
		String[] Persons={"xiaoming","xiaoli","xiaowang"};
		List<String> players = Arrays.asList(Persons);
		//以前的循环方式
		for(String player:players)
		{
			System.out.println(player+";");
		}
		//使用Lambda表达式
		System.out.println("\n------After Lambda----------");
		players.forEach(player->System.out.println(player+";"));
	}
}

2 运行结果

xiaoming;
xiaoli;
xiaowang;

------After Lambda----------
xiaoming;
xiaoli;
xiaowang;

3 结果分析

从代码复杂度来看,使用Lambda表达式以及函数操作,代码非常简单,仅一条语句。

0
1
分享到:
评论

相关推荐

    Java8的lambda表达式

    Lambda表达式引入了函数式编程思想,使Java开发者能更好地利用函数式编程的优点,如高度抽象、避免副作用等。 总结,Java8的Lambda表达式是现代Java开发的重要工具,它为开发者提供了更灵活、简洁的代码实现方式,...

    2_Lambda表达式.zip

    Lambda表达式是Java编程语言中的一个关键特性,自Java 8开始引入,它极大地简化了函数式编程,尤其是在处理集合数据时。Lambda表达式的主要目的是为了创建匿名函数,即没有名字的函数,它可以被当作一个值传递给方法...

    Java 8 lambda表达式引入详解及实例

    "Java 8 lambda表达式引入详解及实例" Java 8 中引入的 lambda 表达式是一种新的编程方式,能够简化代码、提高开发效率。下面将对 lambda 表达式的引入、基本概念、使用方法和实例进行详细的介绍。 lambda 表达式...

    Java 8 lambda表达式

    Java 8 的引入,尤其是Lambda表达式,对Java语言产生了深远的影响,它为Java开发者带来了更简洁、更灵活的编程方式。Lambda表达式是函数式编程的核心元素,它允许我们将函数作为方法参数传递,或者将代码块当作数据...

    java8 lambda表达式学习总结

    3. **方法引用**:当Lambda体完全等同于某个已存在的方法时,可以使用方法引用来替代Lambda表达式,如 `Arrays.sort(list, Comparator.comparingInt(Integer::intValue))`。 4. **构造器引用**:同样,Lambda 表达式...

    C++ 中的 Lambda 表达式

    C++11引入了许多重要的新特性,其中最显著的一项是Lambda表达式。这一特性极大地简化了代码编写过程,使得开发者能够更方便地创建匿名函数对象。Lambda表达式在很多场景下都可以替代回调函数,并且在诸如STL容器的...

    java8lambda表达式Demo

    Java 8 是一个重要的Java平台版本,因为它引入了许多新特性,其中最显著的就是Lambda表达式。Lambda表达式是函数式编程的关键元素,它允许我们以更简洁、更易读的方式编写代码,特别是在处理集合和并发任务时。在这...

    C++ 11 lambda 表达式

    C++ 11引入了lambda表达式,这是一个强大的特性,极大地增强了C++的函数式编程能力。Lambda表达式允许在程序中直接定义匿名函数,并且可以直接在需要的地方使用,无需预先声明。这对于处理回调函数、简化算法实现...

    JavaLambda表达式和匿名类.pdf

    Java 8 引入了Lambda表达式,这是对传统编程方式的一大革新,它极大地简化了函数式编程,尤其是在处理集合和并发操作时。Lambda表达式是Java 8中的一种语法糖,它允许开发者以更简洁的方式定义无状态、无副作用的...

    Lambda表达式的例子

    Lambda表达式是Java 8引入的一种新的编程特性,它极大地简化了函数式编程,并使得代码更加简洁、易读。在Java中,Lambda表达式可以被理解为匿名函数,即没有名字的函数,它可以被当作方法参数传递,或者作为类的成员...

    精通lambda表达式: java多核编程

    Lambda表达式是Java 8引入的关键特性之一,它极大地简化了函数式编程,使得Java开发者能够更有效地处理并发问题,从而更好地利用现代计算机的多核处理器资源。 Lambda表达式的核心概念在于它的简洁性和可传递性。它...

    jdk1.8 Lambda表达式

    Java 8 引入的 Lambda 表达式是 Java 编程语言的重大变革之一,它允许以更简洁的方式表示单方法接口的实现,极大地增强了 Java 语言的表达能力,尤其是结合了函数式接口、Stream API 和其他新特性后。接下来,我们将...

    Java lambda表达式和JVM字节码功能详解.pdf

    Java Lambda表达式是Java 8引入的一个重要特性,它极大地简化了函数式编程风格的实现。Lambda表达式允许我们将函数作为一个值传递,就像传递其他数据类型一样。这在处理集合、事件驱动编程以及多线程等场景下尤其...

    Stream、Lambda表达式练习.doc

    Lambda表达式是Java 8中引入的一种新的函数式编程方式,它可以将函数作为参数传递给其他函数。 Stream是一种lazy的数据处理方式,它可以对集合进行各种操作,而不需要显式地遍历集合。Stream可以通过filter、map、...

    Lambda表达式测试demo

    Lambda表达式是Java 8引入的一种新特性,它极大地简化了函数式编程,使得代码更加简洁、易读。Lambda表达式本质上是匿名函数,可以理解为没有名字的函数,但功能与普通方法相同,能够被赋值给变量,也可以作为参数...

    Lambda表达式.pdf

    Lambda表达式是Java 8引入的一种简洁的表示可传递的匿名函数的方式。它允许我们将函数作为参数传递给方法,或把代码作为数据处理。Lambda表达式由参数列表、箭头符号“-&gt;”和方法体三部分组成。 2. Java集合框架: ...

    C# Lambda表达式

    Lambda表达式是C#编程语言中的一个重要特性,它引入了函数式编程的概念,使得代码更加简洁、易读。在C#中,Lambda表达式主要用于定义匿名函数,即没有指定名称的函数。它们常用于 LINQ(Language Integrated Query,...

    Lambda表达式总结

    ### Lambda表达式总结 #### 一、Lambda表达式的概念与特点 Lambda表达式是一种匿名函数的概念,它在程序设计中提供了高效且简洁的语法结构,主要用于简化代码编写过程中的复杂度。这种表达式允许开发者使用一种...

    Java8的Lambda表达式

    Java 8引入了Lambda表达式,这是一种简洁的编写代码的方式,可以将代码块作为参数传递给方法,或者作为赋值给变量的对象。Lambda表达式为Java增加了函数式编程的能力,使代码更加简洁和灵活。在Java 8中,Lambda...

    Java的lambda表达式讲解代码(各种lambda表达式使用方式:无参、一个参数、多参数、简化形式...)

    1、Lambda表达式概述:了解Lambda表达式的定义、语法和变量捕获机制,以及为什么要在Java中引入Lambda表达式来支持函数式编程。 2、函数式接口与Lambda表达式:学习如何使用Lambda表达式与不同类型的函数式接口进行...

Global site tag (gtag.js) - Google Analytics