首页 > 应用开发 > > 消灭空指针,这才是Java 8的优解?
@Data
public class ProductVO implements Serializable {
@ApiModelProperty("skuId")
private Long skuId;
@ApiModelProperty("商品名称")
private String name;
@ApiModelProperty("品牌名")
private String brandName;
@ApiModelProperty("库存")
private Integer quantity;
@ApiModelProperty("小图列表")
private List<String> smallImgUrls;
@ApiModelProperty("店铺信息")
private ShopVO shop;
// 获取店铺名称
private String getShopName1(ProductVO productVO){
if (productVO != null){
ShopVO shop = productVO.getShopVO();
if (shop != null){
return shop.getName();
}
}
return "";
}
// 获取店铺名称
private String getShopName2(ProductVO productVO){
String result = "";
if (Objects.isNull(productVO)){
return result;
}
ShopVO shop = productVO.getShopVO();
if (Objects.isNull(shop)){
return result;
}
return shop.getName();
}
private static String getName4(ProductVO productVO){
return Optional.ofNullable(productVO).flatMap(data -> Optional.ofNullable(data.getShopVO()))
.map(ShopVO::getName).orElse("");
}

List<String> list = Arrays.asList("北京 天安门", "上海 东方明珠", "厦门 鼓浪屿");
//flatMap方法
list.stream().flatMap(item -> Arrays.stream(item.split(" "))).collect(Collectors.toList()).forEach(System.out::println);
//结果: 北京 天安门 上海 东方明珠 厦门 鼓浪屿
// Map方法
list.stream().map(item -> Stream.of(item.split(" "))).forEach(System.out::println);
// java.util.stream.ReferencePipeline$Head@6576fe71
// java.util.stream.ReferencePipeline$Head@76fb509a
// java.util.stream.ReferencePipeline$Head@300ffa5d
List<ProductRespDTO> list = productVOList.getList().stream().map(d -> {
return ProductRespDTO.builder().drugEncode(d.getSkuId()).drugName(d.getName())
.price(BigDecimal.valueOf(d.getPrice()).divide(new BigDecimal("100"))).usage(d.getUseMethod())
.imgUrl(d.getSmallImgUrls().stream().findFirst().orElse(null)).build();
转自:小郭的技术笔记
来源:juejin.cn/post/7168020414138941471
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69917606/viewspace-3144546/ ,如需转载,请注明出处,否则将追究法律责任。