Lamda表达式

函数式编程的产生(匿名内部类)

interface Mes{
	public void speak();
}
public class Lam {
	public static void main(String[] args) {
		fun(new Mes(){//匿名内部类
			public void speak(){//覆写方法
				System.out.println("hello!");
			}
		});
	}
	public static void fun(Mes m){//传递接口类型参数
		m.speak();
	}
}

  

【2】
匿名内部类
Book接口

interface Book{
	public static final double price=21.8;
	public static final String title="诗词";
	public void show(double price,String title);
}
public class Lam {
	public static void main(String[] args) {
		fun(new Book(){//匿名内部类
			public void show(double price,String title){//覆写方法
				System.out.println(price+"  "+title);
			}
		});
	}
	public static void fun(Book b){//传递接口类型参数
		b.show(34.6,"歌曲");
	}
}

  

研究Lamda必须先熟悉匿名内部类

嵌套太多的原因
JDK1.8引入
【3】

格式
fun((参数类型 参数)->执行语句);

interface Book{
	public static final double price=21.8;
	public static final String title="诗词";
	public void show(double price,String title);
}
public class Lam {
	public static void main(String[] args) {
//		fun(new Book(){//匿名内部类
//			public void show(double price,String title){//覆写方法
//				System.out.println(price+"  "+title);
//			}
//		});
		fun((double price,String title)->System.out.println(price+"  "+title));
	}
	public static void fun(Book b){//传递接口类型参数
		b.show(34.6,"歌曲");
	}
}

  

【4】

Lamda三种形式
(参数)->单行语句
(参数)->{语句;}
(参数)->表示式

interface Book{
	public static final double price=21.8;
	public static final String title="诗词";
	public void show(double price,String title);
}
public class Lam {
	public static void main(String[] args) {
		//Lamda (参数)->{语句;}
		fun((double price,String title)->{
			System.out.println("书的价格:"+price);
			System.out.println("书的名字:"+title);
		});
	}
	public static void fun(Book b){//传递接口类型参数
		b.show(34.6,"歌曲");
	}
}

  

【5】

interface Book{
	public static final double price=21.8;
	public static final String title="诗词";
	public String show(double price,String title);
}
public class Lam {
	public static void main(String[] args) {
		//Lamda (参数)->表示式
		fun((double price,String title)->
			"书的价格:"+price+"书的名字:"+title
		);
	}
	public static void fun(Book b){//传递接口类型参数
		System.out.println(b.show(34.6,"歌曲"));
	}
}

  

【7】
add(x+y)练习Lamde

interface Inte{
	public int add(int x,int y);
}
public class Lam {
	public static void main(String[] args) {
		//Lamda
		fun(
				(a,b)->a+b
		);
	}
	public static void fun(Inte i){
		System.out.println(i.add(34,4));
	}
}

  

总结:

Lamde最终解决的是 定义过多匿名内部类的问题

Lamda表达式的更多相关文章

  1. 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

    前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...

  2. SQL、Linq、lamda表达式 同一功能不同写法

    一.SQL.Linq.lamda表达式 同一功能不同写法 SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employe ...

  3. [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托

    [.net 面向对象程序设计进阶] (5) Lamda表达式(一)  创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...

  4. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  5. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  6. Linq和Lamda表达式的简单处理方式

    一 什么是LINQ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...

  7. python 内置函数 lamda表达式。 open 文件方法

    lamda 表达式 lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 普通的条件语句 if 1 == 1: name = 'kaixin' else: ...

  8. 为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式

    为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下: public class DataComparer<T>:IEqualityCompare ...

  9. 【python】lamda表达式,map

    一个很好的博客:http://blog.csdn.net/mathboylinlin/article/details/9413551 博客不让转载,我只摘抄了里面几个例子,更多内容到博客里去看 lam ...

随机推荐

  1. 【动态规划】拦截导弹_dilworth定理_最长递增子序列

    问题 K: [动态规划]拦截导弹 时间限制: 1 Sec  内存限制: 256 MB提交: 39  解决: 10[提交][状态][讨论版] 题目描述 张琪曼:“老师,修罗场是什么?” 墨老师:“修罗是 ...

  2. openGL纹理映射参数解析

    GLuinttexture[1]; AUX_RGBImageRec *TextureImage[1]; Status=TRUE; // Set The Status To TRUE glGenText ...

  3. cf_ducational Codeforces Round 16_D(gcd)

    题意:求R-L区间满足x=a1*k+b1=a2*l+b2的x的个数; 思路:求出最小的满足条件的x0,则ans=(L-x)/(a1/gcd(a1, a2)*a2)+1; 注意剪枝,不然会超时: 代码: ...

  4. iOS及时log日志查看工具 (iConsole)

    github下载地址:https://github.com/nicklockwood/iConsole 偶然看到的一个iOS及时log日志查看工具,通过该工具,我们可以在任何想看日志的时候,通过手势呼 ...

  5. Rap 安装和配置

    本机环境 系统:CentOS 6.7 64 位 MySQL 5.6 JDK 1.8 Tomcat 8 Redis 3.0.7 Rap 0.14.1 Rap 说明 官网:https://github.c ...

  6. Linux 查看 网卡类型

    http://blog.csdn.net/ydyang1126/article/details/51140131 http://blog.sina.com.cn/s/blog_5425edf40101 ...

  7. MySQL Auto_Increment属性应用

        我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据 ...

  8. 【ACM】HDU1008 Elevator 新手题前后不同的代码版本

    [前言] 很久没有纯粹的写写小代码,偶然想起要回炉再来,就去HDU随便选了个最基础的题,也不记得曾经AC过:最后吃惊的发现,思路完全不一样了,代码风格啥的也有不小的变化.希望是成长了一点点吧.后面定期 ...

  9. Eclipse快捷键及各种设置(转载)

    1.提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项 ...

  10. ytu 1939:统计元音(水题)

    统计元音 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 68  Solved: 33[Submit][Status][Web Board] Descrip ...