您当前的位置: 首页 > 

喜欢猪猪

暂无认证

  • 4浏览

    0关注

    228博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

lambda GroupBy Sum Max复杂表达式的运用

喜欢猪猪 发布时间:2021-10-20 09:53:38 ,浏览量:4

1.最近开发遇到了一个集合按照Id分组然后进行根据价格的最大值sum,进行赋值的操作

net版本:

 var stockMaxNum = lineList.GroupBy(g => g.ResID).ToDictionary(k => k.Key, v => v.Sum(t => t.StockMax)).Max(m => m.Value);//取相同顺序资源的最大库存

java版本:

Map list =lineList.stream().collect(Collectors.groupingBy(ResPriceInfo::getResID,Collectors.summingInt(d -> d.StockMax())));
int stockMaxNum =Collections.max(list.entrySet(), Comparator.comparingInt(Map.Entry::getValue)).getValue();

Map获取最大key的value的写法

Collections.max(linePriceGroup.entrySet(), Comparator.comparingLong(Map.Entry::getKey)).getValue();

C#版本的tryGetValue改写程Java版本的处理

关于math.ceil的使用处理,由于net里面的字段都是使用的BigDecimal而Java里面,这个方法只能传递Double的值,会操作相关类型的转换处理,

String ss=twoHotelPrice.getSalePrice().divide(BigDecimal.valueOf(2)).toString();
model.setSettlementPrice(BigDecimal.valueOf(Math.ceil(Double.valueOf(Double.valueOf(ss)))));
model.setSettlementPrice(twoHotelPrice.getSalePrice().divide(BigDecimal.valueOf(2)).setScale(0,BigDecimal.ROUND_UP));

主要是介绍了BigDecimal.setScale(0,BigDecimal.ROUND_UP))与Math.ceil的功能介绍

都是向上取整的处理,建议使用第二种方式减少代码量以及类型的相互转换

Map的嵌套问题  lambda的处理

C#的实现形式:

 response.DatePrice = this._IPriceCalendar.ProductMgr.ProductDatePriceNewList.GroupBy(g => g.PDPTripVersion).ToDictionary(k => k.Key, v1 => v1.GroupBy(g => g.PDPSaleDate).ToDictionary(k => k.Key, v2 => v2.FirstOrDefault()));

JAVA的转换形式处理:

Map map = ProductMgr.productManagerModel.getProductDatePriceNewList().stream().
        collect(Collectors.groupingBy(SGPProductDatePriceNewCustom::getPDPTripVersion));
Map priceListMap = null;
for(Map.Entry listMap:map.entrySet())
{
    priceListMap=listMap.getValue().stream().collect(Collectors.
            toMap(SGPProductDatePriceNewCustom::getPDPSaleDate,SGPProductDatePriceNewCustom->SGPProductDatePriceNewCustom));
    response.DatePrice.put(listMap.getKey(),priceListMap);
}

关注
打赏
1648795721
查看更多评论
立即登录/注册

微信扫码登录

0.0493s