Java8新特性-整理汇总
小于 1 分钟
1. Optional
使用Optional.of、ofNullable、orElse、orElseGet遇到的坑
2. Stream
2.1 flatMap
Java 8 Steam API map和flatMap方法使用详解
- 简化代码
List<Klass> result2 = new ArrayList<>();
for (KlassGroup group : groupList) {
for (Klass klass : group.getKlassList()) {
result2.add(klass);
}
}
但是这种套了两层for循环的代码太丑陋了。面对这种需求,flatMap可以大展身手了
List<Klass> result3 = groupList.stream()
.flatMap(it -> it.getKlassList().stream())
.collect(Collectors.toList());
list.stream().flatMap(a -> Stream.of(a.getNumber1(),a.getNumber2())).distinct()...
2.2 reduce
Stream.reduce()合并流,如BigDecimal 的add求和
3. 排序
扩展
去重 😈
// 去重 根据工单类型dictBillServiceTypeId
List<Map<String, Object>> settleOnlyConfigList = todayAllBillList.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.get("dictBillServiceTypeId").toString()))), ArrayList::new)
);