Stream使用

一.转map时key重复value为对象,进行合并

Map<String, List<Purbidresultitems>> Map = purBidResults.stream().collect(toMap(it -> it.getRfqid(), it -> Lists.newArrayList(it), (List<Purbidresultitems> newValueList, List<Purbidresultitems> oldValueList) ->
{
    oldValueList.addAll(newValueList);
    return oldValueList;
}));

易出现的错误:Lists导包import com.google.common.collect.Lists;

二.转map时value为对象两种写法

1.Map<Integer, Goods> map = list.stream().collect(Collectors.toMap(Goods::getId, Goods-> goods));

2.Map<Integer, Goods> map = list.stream().collect(Collectors.toMap(Goods::getId,Function.identity()));

三.转map把value字符串合并

Map<String, String> map = list.stream().collect(Collectors.toMap(Goods::getId, Goods::getName, (u1,u2)->(u1+","+u2)));

四.转map时value为空报空指针解决方案

Map<String, String> map = list.stream().collect(HashMap::new,(map,it)->map.put(it.getName(),it.getCode()),HashMap::putAll);

五.转map把value取对象的某个字段组成list

Map<String, List> invoiceRequestIds = omsInvoiceRequests.stream().collect(Collectors.toMap(OmsInvoiceRequest::getOrderId, p -> {
    List ids = new ArrayList<>();
    ids.add(p.getId());
    return ids;
},(List value1, List value2) -> {
    value1.addAll(value2);
    return value1;
}));

六.value为BigDecimal类型时求和

Map<String, BigDecimal> map = xxx.stream().collect(Collectors.toMap(TaskPurchaseRecord::getRequestItemId, p -> p.getSaleQuantity(), (x, y) -> x.add(y)));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值