lambda的优雅用法
所属分类 java
浏览量 1589
函数式接口 只有一个接口方法
@FunctionalInterface
排序 结合 方法引用 method references
结合 Optional 处理 null
直接上代码
import java.util.Arrays;
import java.util.Date;
import java.util.Optional;
public class GraceLambdaTest {
public static void main(String[] args) throws Exception {
System.out.println("GraceLambdaTest start " + new Date());
MyFunctionIntf intf = (s) -> System.out.println(s);
intf.doSomething("hello");
// 方法引用 method references
intf = System.out::println;
intf.doSomething("hello");
Pet[]pets = {new Pet("tiger",9),new Pet("cat",3),new Pet("dog",7)};
System.out.println("order by age asc");
// 引用 静态方法
Arrays.sort(pets,Pet::compareByAge);
Arrays.stream(pets).forEach(System.out::println);
System.out.println("order by age desc");
Arrays.sort(pets,Pet::compareByAgeDesc);
Arrays.stream(pets).forEach(System.out::println);
// filter Predicate
// forEach Consumer
Arrays.stream(pets).filter(p -> p.age > 5).forEach(System.out::println);
Arrays.stream(pets).filter(p -> p.age > 5).map(p -> p.name).forEach(System.out::println);
// 与 Optional 结合使用 , 优雅处理 null
Pet pet = null;
Optional petopt = Optional.ofNullable(pet);
String name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
System.out.println(name);
pet = new Pet(null,7);
petopt = Optional.ofNullable(pet);
name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
System.out.println(name);
pet = new Pet("hello",7);
petopt = Optional.ofNullable(pet);
name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
System.out.println(name);
}
}
完整代码
https://gitee.com/dyyx/hellocode/tree/master/src/dyyx/java8/lambda
上一篇
下一篇
六顶思考帽
三十分钟看清经济机器如何运转
联合国五大常任理事国经济实力排名
prometheus node-exporter 实用指标
prometheus node-exporter 全部指标
期货与期权