1. jdk8 Lambda表达式
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
写法: parameters -> expression; 或者 (parameters) -> { statements; }
2. jdk8 stream
Stream(流)是一个来自数据源的元素队列并支持聚合操作。
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。
对流的处理可理解为:
List<Integer> transactionsIds =
widgets.stream()
.filter(b -> b.getColor() == RED)
.sorted((x,y) -> x.getWeight() - y.getWeight())
.mapToInt(Widget::getWeight)
.sum();
3. jdk8 forEach
forEach可对Map和List进行循环。但据网上分析,此方法对性能造成浪费,建议使用Iterator。
List<String> list = new ArrayList<>();
list.stream().filter(p -> "".equalsIgnoreCase(p)).forEach(p -> System.out.println(p));
4. Optional.ofNullable(value).orElse(str)
Optional.of(value),如果value为null,则会报空指针异常;
Optional.ofNullable(value),如果value为null,返回一个empty对象;
orElse(str), 如果value不为空,返回value对象;如果value为null,则返回str;无论value值是否为null, 都会执行orElse里的方法;
orElseGet(str), 当value值不为null时, 不会执行orElseGet里的方法;
若方法不是纯计算型的,有与数据库交互或者远程调用的,应该使用orElseGet().