为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第4天 Java函数式编程

标签:
Java

课程名称:Java函数式编程

课程章节:第1章-函数式编程介绍

课程讲师:接灰的电子产品

课程内容:

  • 函数式编程的介绍
  • 函数式编程的特点

1. 函数式编程的介绍

1.1 介绍

  • 函数式编程是一种编程范式,它将计算视为函数的运算,并避免变化状态和可变数据。它是一种声明式编程范式,也就是说,编程是用表达式或声明而不是语句来完成的。

    • Lamda 表达式:(a, b) -> a + b;

  • 比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

    userList.stream()
    	.skip(1)
    	.peek(user -> log.debug("user:{}", user.getUserName()))
    	.collect(Collectors.toList());
    

1.2 优点

  • 使我们更简单语句编写复杂的代码。
// Java7
button.addActionListener(new ActionListener(){
	@Overide
	public void actionPerformed (ActionEvent e){
		doSomethingwith(e) ;
	}
});
//Java8
button.addActionListener(
	e -> doSomethingWith(e));

//Java7
Collections.sort(list, new Comparator<Integer>(){
	@Overide
	public int compare(final Integer o1,final Integer o2){
		return o2.compareTo(o1);
	}
});
//Java8
Collections.sort(
	list, (o1, o2) -> o2.compareTo(o1));

图片描述

1.3 特点

  • 纯函数
    1. 函数的执行没有副作用。
    2. 返回值依赖于输入参数。
  • 高阶函数
    1. 函数的参数可以是一个/多个函数。
    2. 函数的返回值也可以是一个函数。
interface IFactory<T> {
	T create();
}
interface IProducer<T> {
	T produce();
}
interface IConfigurator<T> {
	void conifgure<T t>
}

static class HigherOrderFunctionClass{
	public	<T> IFactory<T> createFactory(IProducer<T> producer, IConfigurator<T> configurator){
		return () -> {
			T instance = producer.produce();
			configurator.configure(instance);
			return instance;
		}
	}
}

//调用
Ifactory<User> factory = new HigherOrderFunctionClass()
    .createFactory(
    //第一个参数
	() -> User.builder().id(100L).name("imooc").build(), 
    //第二个参数
    (user) -> {
        	log.debug("用户信息:{}", user); 
        	user.setMobile("13970212222");
    	}
                                                                   }
	);

课程截图:


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消