函数式编程和lambda表达式

一.接口的默认方法
(1)在接口中添加一个非抽象方法只需要使用一个default 关键字就可以
(2)我们把非抽象方法理解成一个扩展方法,

二.函数式编程
1.什么是函数式编程 ?一切皆函数
2.将处理问题的粒度从类变成函数,从而可以更好的满足系统对重用性,和扩展性的支持
3.可以将函数作为参数传递给另一个函数
4.可以简化代码的操作
5.开发速度快,易于并发编程,不需要考虑死锁
6.耗费cpu
三.Lambda表达式
(1)lambda表达式是一种新的语法形式,简化了代码的开发操作,由编译器转化为常规的代码
(2)Lambda表达式可以理解成函数式编程的体现方式
(3)lambda表达式通过表达式代替功能接口,就类似于匿名方法
(4)语法 ->称为lambda表达式的操作符
结构: (parameters)参数列表 -> (expression|{statement})表达式

四,使用lambda表达式对数组进行排序

String [] str = {"v","s","e"};

1.第一种方式
Arrays.sort(str,(x,y) -> x.compareTo(y));

2.第二种方式
 Arrays.sort(str,String::compareTo);

五.使用lambda表达式遍历集合
List list1 = new ArrayList();
list1.add(“kadaj”);
list1.add(“dawef”);
list1.add(“daegg”);

1.正常lambda表达式	
	list1.forEach((name)->System.out.println(name));

2.第二种方式 :双冒号表达式
	list1.forEach(System.out::println);

六.查询集合中带有某个字符串的元素
例:
list.forEach(item->{
if(!“tina”.equals(item)){
System.out.println(item);
}
});

七.Lambda表达式对集合进行排序
list1.sort((x,y)->x.compareTo(y));

八.lambda表达式的应用场景
–以内部迭代取代外部迭代
外部迭代:描述怎么干,只能顺序处理List集合中的数据
内部迭代:描述干什么,不一定要顺序处理List集合中的循环,使用forEach
–以流水线的方式处理数据:使用Steam stream对集合进行包装,通常和lambda表达式一起使用
支持很多操作:
(1)filter(过滤):list.stream().filter(p -> p.getAge()>21).forEach(p -> System.out.println(p.getAge()));
(2)limit(过滤): list.stream().limit(3) //获取前三个元素
(2)sorted(排序):list.stream().sorted((p1,p2)->p1.compareTo(p2))
(3)max: list.stream().max((p1,p2)->p1.getAge() > p2.getAge()) //获取最大值
(4)min: Person p = list.stream.min((p1,p2)-> p1.getAge() < p2.getAge()).get(); //获取拥有最小年龄的对象
(5)collect: List evens = list.stream().filter(i -> i%2 ==0).collect(Collectors.toList) //返回符合条件的数据并封装成集合
(6)sum:
(7)map:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值