java stream流的高级使用

导读:本篇文章讲解 java stream流的高级使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//orderStockoutDetails中的每一项的getOrderDetailId对应的名称
Map<Long, String> skuNameMap = orderStockoutDetails.stream().collect(Collectors.toMap(OrderStockoutDetail::getOrderDetailId, OrderStockoutDetail::getSkuName, (i1, i2) -> i2));


//orderStockoutDetails中的每一项的getOrderDetailId对应的数量
Map<Long, Integer> skuAmount = orderStockoutDetails.stream().collect(Collectors.groupingBy(OrderStockoutDetail::getOrderDetailId, Collectors.summingInt(OrderStockoutDetail::getAmount)));


//allItem中的每一项的getOrderDetailId对应的数量
Map<Long, Integer> skuAmount2 = allItem.stream().collect(Collectors.groupingBy(ShipItemDTO::getOrderDetailId, Collectors.summingInt(ShipItemDTO::getAmount)));

 //从condition.getSkuCodes()中遍历每一个skucode,如果skucode在skuAmount里存在则直接获取skuAmount里面对应skucode的amount值,否则就赋为0L,核心代码

countSkuAmountResponseDTO.setAmount(skuAmount.getOrDefault(it, 0L));

getOrDefault源代码

default V getOrDefault(Object key, V defaultValue) {
    V v;
    return (((v = get(key)) != null) || containsKey(key))
        ? v
        : defaultValue;
}

意思就是去skuAmount中查找传来的key也就是本代码的it,判断是否在skuAmount里能找到这个key对应的内容,如果找不到就使用传过来的defaultValue作为值

Map<String, Long> skuAmount = skuAmountResponseDTOS
        .stream()
        .collect(Collectors.groupingBy(CountSkuAmountResponseDTO::getSkuCode, Collectors.summingLong(CountSkuAmountResponseDTO::getAmount)));

return condition.getSkuCodes().stream().map(it -> {

    CountSkuAmountResponseDTO countSkuAmountResponseDTO = new CountSkuAmountResponseDTO();
    countSkuAmountResponseDTO.setSkuCode(it);
    countSkuAmountResponseDTO.setAmount(skuAmount.getOrDefault(it, 0L));

    return countSkuAmountResponseDTO;
}).collect(Collectors.toList());
couponInfoList.stream().filter(Objects::nonNull). ...当前对象不为空才会继续往下操作

Optional的使用

List<Integer> listAll = new ArrayList<>();

for (int i = 0; i < 100; i++) {
    Optional.ofNullable(1).ifPresent(listAll::add);

}

System.out.println(listAll.toString());

WuSongUser wuSongUser = new WuSongUser();

Optional.ofNullable("邬松").ifPresent(wuSongUser::setName);

System.out.println(wuSongUser);

java stream流的高级使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105999.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!