stream.fliter结合*macth系列过滤

1,filter用{}可多行返回 boolen即可
               productDetailVos1= productDetailVos.stream().filter(x->
                Arrays.asList((x.getChannel()==null?",":x.getChannel()).
                        split(","))
                        .contains("1")).collect(Collectors.toList());
                        
        productDetailVos.stream().filter(x->
                {List channel= Arrays.asList((x.getChannel()==null?",":x.getChannel()).split(","));
       return channel.contains(1);
                }
        ).collect(Collectors.toList());
        
        2,anyMatch会走完每个循环,然后汇总boolen值 {}可以多行
         List productDetailVos = new ArrayList<>();
        List productDetailVos1 = new ArrayList<>();
        ProductDetailVO p1 = new ProductDetailVO();
        p1.setChannel("1");
        productDetailVos.add(p1);
        ProductDetailVO p2 = new ProductDetailVO();
        p2.setChannel("2,3");
        productDetailVos.add(p2);
        ProductDetailVO p3 = new ProductDetailVO();
        p3.setChannel(null);
        productDetailVos.add(p3);
        ProductDetailVO p4 = new ProductDetailVO();
        p4.setChannel("");
        productDetailVos.add(p4);
        ProductDetailVO p5 = new ProductDetailVO();
        p5.setChannel("2");
        productDetailVos.add(p5);
        ProductDetailVO p6 = new ProductDetailVO();
        p6.setChannel("6");
        productDetailVos.add(p6);
        ProductDetailVO p7 = new ProductDetailVO();
        p7.setChannel("11");
        productDetailVos.add(p7);
        ChannelGroupItemVO finalDefaultChannelGroupItemVO = new ChannelGroupItemVO();
        finalDefaultChannelGroupItemVO.setChannelCode("1");
        List  finalNotDefaultChannelGroupItemListVos = new ArrayList<>();
        ChannelGroupItemVO d1= new ChannelGroupItemVO();
        d1.setChannelCode("2");
        finalNotDefaultChannelGroupItemListVos.add(d1);
        ChannelGroupItemVO d2= new ChannelGroupItemVO();
        d2.setChannelCode("11");
        finalNotDefaultChannelGroupItemListVos.add(d2);
        productDetailVos1 = productDetailVos.stream().filter(x -> {
            List channelCodes = Arrays.asList((x.getChannel() == null ? "," : x.getChannel()).split(","));
            //默认渠道
            if (finalDefaultChannelGroupItemVO != null && finalDefaultChannelGroupItemVO.getChannelCode().equals("1")) {
                boolean a =channelCodes.stream().anyMatch(channelCode->{
                    List containChannelGroupItemListVos=finalNotDefaultChannelGroupItemListVos.stream().filter(finalNotDefaultChannelGroupItemListVo->channelCode.equals(finalNotDefaultChannelGroupItemListVo.getChannelCode())).collect(Collectors.toList());
                    if(containChannelGroupItemListVos!=null &&containChannelGroupItemListVos.size()>0){
                        return true;
                    }else{
                        return false;
                    }
                });
                return a;
            } else {
                return channelCodes.contains("2");
            }

        }).collect(Collectors.toList());
 

3,普通结合应用示例

//找到基础组合key(8中组合优先级找)中和使用key匹配的
List mergerRes = merger.stream().distinct().filter(mergerCode ->
        usedKeys.stream().anyMatch(usedKey ->
                mergerCode.equals(usedKey))
).collect(Collectors.toList());
        

你可能感兴趣的:(stream.fliter结合*macth系列过滤)