JavaSE_Lambda

1.什么是Lambda表达式?

Lambda表达式是java 8 引进的语法特性。对于函数式接口(只申明一个函数的接口),它提供了一个简单的方式让程序员编写匿名函数,同时改善了Java集合框架库(Collection),使得更加容易迭代、过滤一个集合,更加容易从一个集合中提取数据。并且在多核计算机的情况下,新特性提高了运算性能。

2.函数式接口!

  • 函数式接口就是只显式声明一个抽象方法的接口。
  • 为保证方法数量不多不少,java8提供了一个专用注解 @FunctionalInterface。
  • 函数式接口可以包含默认方法

3.Lambda表达式语法!

  • -> 被称为 Lambda 操作符或箭头操作符。它将 Lambda 分为两个部分。
  • 左侧: 指定了 Lambda 表达式需要的方法参数列表。
  • 右侧: 指定了 Lambda 体,即 Lambda 表达式要执行的功能。
    在这里插入图片描述

3.1 参数类型和参数

  • 案例1 :声明参数类型和参数
( Integer number ) -> { return number * 1024; };
  • 案例2 :默认推导声明参数类型
( number ) -> { return number * 1024; };
number -> { return number * 1024; };

3.2 匿名方法实现体

  • 案例1 :只有一条语句时,可省略return和{ }
( Integer number ) -> number * 1024;
  • 案例2 :没有返回值,需要输出时
( number ) -> System.out.println(number * 1024);

4.Lambda案例(集合)

4.1 集合排序比较器:Comparator

//使用Lambda表达式
Collections.sort ( bookList , (o1 , o2) -> o1.getSales( ) - o2.getSales( ) ); 
//使用匿名内部类
Collections.sort ( bookList , new Comparator<Book>( ) { 
	@Override 
	public int compare(Book o1, Book o2) { 
		return o1.getSales() - o2.getSales();
	} 
});

4.2 List 遍历操作

//使用Lambda表达式遍历集合
bookList.forEach ( book -> System.out.println(book));
//使用普通for循环遍历集合。 
for (Book book : bookList) { 
	System.out.println(book);
}

4.3 List 过滤遍历操作:filter

//首先获取List的Stream对象
bookList.stream( )
	//传入条件
	.filter( book -> book.getPrice() > 20 )
	//输出
	.forEach( book -> System.out.println(book) ); 

//直接判断
bookList.forEach( book -> {
	if(book.getPrice( ) > 20) {
		System.out.println(book);
	}
});

4.4 计算集合元素的最大值、最小值、总和以及平均值

DoubleSummaryStatistics statsPrice = bookList.stream( ) .
	mapToDouble( book -> book.getPrice( ))
	.summaryStatistics( ); 
IntSummaryStatistics statsSales = bookList.stream( ) 
	.mapToInt( book -> book.getSales( ) )
	.summaryStatistics( );
  • statsSales.getCount( ) //统计数量
  • statsSales.getAverage( ) //统计平均值
  • statsSales.getMax( ) //统计最大值
  • statsSales.getMin( ) //统计最小值
  • statsSales.getSum( ) //统计总和
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值