JAVA SE 8 学习笔记(三)使用lambda编程

三、使用lambda编程


3.1 延迟执行

所有lambda表达式都是延迟执行的,如果希望立即执行一段代码,则没必要使用lambda表达式

延迟执行代码原因可能有:

·在另一个线程中运行代码

·多次运行代码

·在某个算法的正确时间点上运行代码

·在某些情况发生时运行代码(如按钮点击、数据到达)

·只有在需要时运行代码


例如:

public static void info(Logger logger, Supplier<String> message) {

if (logger.isLoggable(Level.Info))

logger.info(message.get());

}

logger.info(() -> 一些运算);

只有当条件符合时,运算才会被执行。


3.2 选择lambda表达式的参数

 一般来说,在设计算法时,希望将所需信息作为参数传递进逻辑。

如果需要在lambda表达式执行时捕获传入的参数,可以选择IntConsume等接口

例如:

public static void repeat(int n, IntConsumer action) {

for(int i=0; i<n; i++)  action.accept(i);

}

如果不需要参数,可以考虑以下写法

public static void repeat(int n, Runnable action) {

for ( int i=0; i<n; i++) action.run();

}

repeat(10, () -> System.out.println("Hello, World!"));


3.3 选择一个函数式接口


Table 3-1 Common Functional Interfaces

Functional Interface

Parameter Types

Return Type

Abstract Method Name

Description

Other Methods

Runnable

none

void

run

Runs an action without arguments or return value

Supplier<T>

none

T

get

Supplies a value of type T

Consumer<T>

T

void

accept

Consumes a value of typeT

chain

BiConsumer<T, U>

T

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值