1、java8多条件过滤事例:
// 筛选短信黑名单数据
List smsBlackListSet = allBlacklist.stream().filter(sms -> (sms.getCorpcode().equals(corpCode) &&
sms.getBltype().equals(MessageTypeEnum.SMS.getKey()) && sms.getSvrtype().equals(bus))).collect(Collectors.toList());
// 解释:本次对allBlacklist集合过滤条件三个:sms.getCorpcode(),sms.getBltype(),sms.getSvrtype()。
过滤判断条件是布尔类型的,所以多个条件的连接需要用&&(与) 、|| (或)连接符连接起来。最后筛选出符合条件的数据。
2、java8多条件分组事例:
// 对黑名单根据corpcode 和 bltype进行分组
Map<String,Map<Integer,List>> smsBlackListMap = allBlacklist.stream().collect(Collectors.groupingBy(PbListBlack::getCorpcode,Collectors.groupingBy(PbListBlack::getBltype)));
// 解析:bltype为Integer类型,corpcode为String类型。
我们处理方式,1.先用bltype进行分组,得到一个Map<Integer,List>; 如: Collectors.groupingBy(PbListBlack::getBltype))
2、再用corpcode进行分组,得到Map<String,Map<Integer,List>>。如Collectors.groupingBy(PbListBlack::getCorpcode,Collectors.groupingBy(PbListBlack::getBltype))