Demo-代码

package com.lenovo.quotation.service;

import com.lenovo.quotation.service.dto.ApproverDTO;
import org.springframework.util.CollectionUtils;

import java.util.*;
import java.util.stream.Collectors;

public class Demo {


    public static void main(String[] args) {
        test();
        groupByStream();
        mapDemo();
    }


    public static void test(){

        Map<String, List<ApproverDTO>> approvers = new HashMap<>();
        List<String> ancestorGeoUnitIds = new ArrayList<>();
        //init
        List<ApproverDTO> s1 = new ArrayList();
        Collections.addAll(s1,ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("2").build(),ApproverDTO.builder().geographicUnitId("3").build());
        approvers.put("CFO1",s1);

        List<ApproverDTO> s2 = new ArrayList();
        Collections.addAll(s2,ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("2").build(),ApproverDTO.builder().geographicUnitId("3").build());
        approvers.put("CFO2",s2);

        Collections.addAll(ancestorGeoUnitIds,"2","3");

        //begin
        List<List<ApproverDTO>> resultApproverDTO = approvers.values().stream().map(approverDTOS -> {//approverDTOS多个-List<>
            List<ApproverDTO> oneListApproverDTO = null;
            for (String ancestorGeoUnitId : ancestorGeoUnitIds) {
                oneListApproverDTO = approverDTOS.stream().filter(approverDTO -> ancestorGeoUnitId.equalsIgnoreCase(approverDTO.getGeographicUnitId())).collect(Collectors.toList());
                if (!CollectionUtils.isEmpty(oneListApproverDTO)) {
                    break;
                }
            }
            return oneListApproverDTO;
        }).collect(Collectors.toList());


        System.out.println("........");
    }

    //stream- groupBy()
    public static Map<String, List<ApproverDTO>> groupByStream(){

        List<ApproverDTO> approverDTOList = new ArrayList<>();
        Collections.addAll(approverDTOList,ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("2").build(),ApproverDTO.builder().geographicUnitId("3").build());
        Map<String, List<ApproverDTO>> result = approverDTOList.stream().collect(Collectors.groupingBy(ApproverDTO::getGeographicUnitId));
        System.out.println("-----------");
        return result;
    }

    //创建List的好方法
    public static void mapDemo(){

        Map<String, List<ApproverDTO>> approvers = new HashMap<>();
        List<String> ancestorGeoUnitIds = new ArrayList<>();
        //init
        List<ApproverDTO> s1 = new ArrayList();
        Collections.addAll(s1,ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("2").build(),ApproverDTO.builder().geographicUnitId("3").build());
        approvers.put("CFO1",s1);

        List<ApproverDTO> s2 = new ArrayList();
        Collections.addAll(s2,ApproverDTO.builder().geographicUnitId("1").build(),ApproverDTO.builder().geographicUnitId("2").build(),ApproverDTO.builder().geographicUnitId("3").build());
        approvers.put("CFO2",s2);

        Collections.addAll(ancestorGeoUnitIds,"2","3");



        Map<String, List<ApproverDTO>> listMap = approvers.entrySet().stream().map(entry -> {
            System.out.println("key-" + entry.getKey() + ":value-" + entry.getValue());
            List<ApproverDTO> value = entry.getValue();

            List<ApproverDTO> result =null;
            for (String ancestorGeoUnitId:ancestorGeoUnitIds) {
                result = value.stream().filter(approverDTO -> ancestorGeoUnitId.equalsIgnoreCase(approverDTO.getGeographicUnitId())).collect(Collectors.toList());
                if(!CollectionUtils.isEmpty(result)){
                    break;
                }
            }

            entry.setValue(result);
            return entry;
        }).collect(Collectors.toMap(entry1 -> entry1.getKey(), entry1 -> entry1.getValue()));


        System.out.println("------");
    }


}

posted @ 2019-09-07 18:47  叶落无蝉鸣  阅读(43)  评论(0编辑  收藏  举报