• 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));
    人总得做点什么 ,不是么
  • 相关阅读:
    ssl双向认证
    keycloak管理用户权限
    Apollo单向SSL认证(2)
    Apollo单向SSL认证(1)
    apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息
    apollo1.7.1初探(一)安装apollo、创建并启动broker
    Mosquito集群模式
    什么是MQTT协议?
    物影子操作
    kafka和mqtt的区别是什么?
  • 原文地址:https://www.cnblogs.com/liweibing/p/14871488.html
Copyright © 2020-2023  润新知