继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

两只角的蜗牛
关注TA
已关注
手记 25
粉丝 2
获赞 4

课程名称: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");
    	}
                                                                   }
	);

课程截图:


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP