zoukankan      html  css  js  c++  java
  • lamdar

    1. 集合封装为Map

    先理解一下参数

    (1) key为 属性, value 为对象本身

    Map<String, ActExtNodeInfo> nodeMap = modelService.getNodeInfoByModel(modelData)
    .stream()
    .collect(Collectors.toMap(ActExtNodeInfo::getNodeId, e -> e,(e1, e2) -> e1));

    Map<String, DetailPlanDs> dsmap = planDs.stream().collect(Collectors.toMap(DetailPlanDs::getId, ds -> ds));

    (2) key为 属性, value 为属性

    Map<String, String> collect = columnInfoByClass.stream().collect(Collectors.toMap(SmrwDatasourceTableItem::getFieldName, SmrwDatasourceTableItem::getDataType));

    备注 :部分方法上面的写法不适用一些场景,比较而言,下面的写法更宽泛一点

    (3) key为属性 ,value为属性, 如果存在相同key, 采用前面的值
    Collectors.toMap(FormConfigDetail::getColumnCode, FormConfigDetail::getColumnDataType, (k1, k2) -> k1)

    2. 集合封装为另一个List(其中的一个属性组成)

    (1) 去重,且将其中的一个属性组装成一个新的集合

    List<CashEntity> cashEntityList = cashService.findListByFundBatchNo(billNos);
    List<String> billNoList = cashEntityList.stream().map(CashEntity::getBillNo).distinct().collect(Collectors.toList());

    (2)加上大括号后,就需要return了

    3. allMatch的匹配方法

    备注: 当这个 xjPayedDetailList 为空集合, 恒为true 所以在执行此方法之前,需要进行非空判断

    Boolean allMatch = xjPayedDetailList.stream().allMatch(s -> XjSmsbmEnum.PayState.PAYSUCCESS.getCode().equals(s.getDataState()) ||
    XjSmsbmEnum.PayState.PAYFAIlURE.getCode().equals(s.getDataState()));

    4. 拼接字符串,逗号拼接

    String errInsuranceCodes = errData.stream().map(d -> (String)d.get("INSURANCECODE")).collect(Collectors.joining(","));

    5. 累加

    list.stream().map(FiscalDetailItem::getApplyAmount).reduce(BigDecimal::add).get();


    6.过滤,符合条件的留下来

    同样也是 :: 和 -> 区别
    List<aa> s = planRules.stream().filter(DetailPlanRule::getIsMoney).collect(Collectors.toList());

    List<SfcColumn> ccCols = columns.stream().filter(c -> ColumnPropertyEnum.collectCredit.equals(c.getColumnProperty())).collect(Collectors.toList());


    7.排序,根据某个字段排序


    list.stream().sorted(Comparator.comparing(DetailPlanRule::getSort))

     8.  排序 

    Map<String, List<XjSmsbmSummaryDetail>> collect = xjSmsbmSummaryDetailList.stream()
    .filter(s -> recDetailBankTransitList.contains(s.getRecBankType()))
    .collect(Collectors.groupingBy(XjSmsbmSummaryDetail::getRecBankType));
    人总得做点什么 ,不是么
  • 相关阅读:
    [Linux]调整swap
    [Linux]mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP
    Canvas动画:地球绕着太阳转
    50个好用的前端框架,建议收藏!
    flex布局属性说明
    纯CSS绘制的图形一览
    深入理解CSS盒模型(转)
    JS的防抖与节流学习笔记
    应用八:Vue之在nginx下的部署实践
    css元素居中的几种方式
  • 原文地址:https://www.cnblogs.com/liweibing/p/14871488.html
Copyright © 2011-2022 走看看