问题描述
是否有更优雅的方法可以做到这一点?
List<Model1> list1 = this.dao.list();
list1.stream().findFirst().orElseThrow(Exception::new);
List<Model2> list2 = list1.stream().map(this::buildModel2).collect(toList());
理想情况下,我想将第2行和第3行合并为一行,同时保留相同的行为。
解决方法
您可以通过Optional
过滤的!isEmpty()
运行该列表:
List<Model2> list2 = Optional.of(list1).filter(c -> !c.isEmpty())
.orElseThrow(Exception::new).stream().map(this::buildModel2).collect(toList());
——-
实际上,所有三行都可以变成一行:
List<Model2> list2 = Optional.of(dao.list()).filter(c -> !c.isEmpty())
.orElseThrow(Exception::new).stream().map(this::buildModel2).collect(toList());