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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM