从java 8推出支持lambda已经很多年,但很多人在程序中对lambda的使用还是不够充分.
lambda表达式 可以很方便的将当前上下文中的变量、需求的计算逻辑封装成功能接口的实现;习惯的用这种方法划分、拆解程序,可以使得程序逻辑更加清晰.
而且在标准库在很多类上也增加了支持lambda表达式的方法,在有类似的需求时可以方便的使用,比如AtomicLong.getAndAccumulate.
下面是一些常用的功能接口
泛型 的 Function 、Predicate、Supplier、Consumer、Unary Operator 、BiFunction、BiFunction、BiPredicate、BiSupplier、BiConsumer
基本类型变量功能接口,每种基本类型配套的Function、Predicate、Supplier、Consumer,比如IntSupplier、LongFunction。
虽然基本类型可以自动拆箱、自动装箱,但是为避免降低效率,尽量使用基本类型变量接口.
在 Stream 中也有对应的基本类型Stream与之对应,配合使用.比如IntStream、.LongStream.
示例代码
int contextParam = 6;
AtomicInteger atomicInteger = new AtomicInteger(3);
atomicInteger.getAndAccumulate(
2,(x,y)->
x+y*contextParam
);
System.out.println(atomicInteger.get());
IntStream.range(1,3).asLongStream().forEach((x)->{
System.out.println(contextParam*x);
});
输出
15
6
12