zoukankan      html  css  js  c++  java
  • java 两个List对象取交集 差集 以及交集更新

    List<MainDataMd0006PO> listpo = BeanUtils.transferList(mainDataMd0006Params, MainDataMd0006PO.class);
    
            //查询 存在的--根据批次编码
            List<MainDataMd0006PO> listup = mainDataMd0006Service.selectBatchIds(listpo);
    
    
            // 交集 (list1 & list2) 取list1 表的数据
            List<MainDataMd0006PO> listupdate =
                    listpo.stream().filter(item -> listup.stream().map(up -> up.getPOSID()).collect(
                            Collectors.toList()).contains(item.getPOSID())).collect(Collectors.toList());
    
            listupdate.stream().forEach(update -> listup.stream().filter(up -> Objects.equals(update.getPOSID(), up.getPOSID())).
                    findAny().ifPresent(up -> update.setId(up.getId())));
    
    
            // 差集 (list1 - list2)
            List<MainDataMd0006PO> listadd =
                    listpo.stream().filter(item -> !listup.stream().map(up -> up.getPOSID()).collect(
                            Collectors.toList()).contains(item.getPOSID())).collect(Collectors.toList());


    更新多个字段示例

    List<IrrigationPlanListDTO> irrigationPlanListDTOList=new ArrayList<>();
     //赋值 irrigationTaskUniqueId
                        irrigationPlanListDTOList.stream().forEach(update->irrigationTaskDOList.stream().filter(
                                task->Objects.equals(update.getProcessId(),task.getProcessId())
                        ).findAny().ifPresent(task -> update.setIrrigationTaskUniqueId(task.getIrrigationTaskUniqueId()).setPlanUniqueId(task.getPlanUniqueId()) ));

    更新多个字段时对应的实体类上面需要加注解  @Accessors

    @Data
    @Accessors(chain = true)
    public class IrrigationPlanListDTO implements Serializable {
    
        /**
         * uniqueid
         */
        private String planUniqueId;
    
        /**
         * 水肥灌溉计划名称
         */
        private String planName;
    
        /**
         * 计划状态,0=禁用,1=启用
         */
        private Integer status;
    
        /**
         * 任务uniqueid
         * */
        private String irrigationTaskUniqueId;
    
        /**
         * 进程id
         * */
        private String processId;
    
        /**
         * 计划下的总耗时
         * */
        private Long timeCost;
    
        /**
         * 计划下总次数
         * */
        private Integer totalCount;
    }
  • 相关阅读:
    web前端笔记1
    前端与后台交互所需技术
    js的HTML属性操作
    浮动塌陷
    前端与后端的交互(定义接口)
    AjAX(第3章 Ajax的简单例子(Ajax+PHP)
    AjAX(简单概要介绍)
    Bootstrap 学习之js插件(折叠(collapse)插件)
    Net core 项目 EF CodeFist 多重外键约束问题
    对VS 2017中ASP.NET Core项目解决:Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  • 原文地址:https://www.cnblogs.com/yangjinwang/p/15184013.html
Copyright © 2011-2022 走看看