java - 从 2 个列表中过滤并使用 java8 获取匹配的记录
问题描述
我有两个列表,一个是messagePermissionResponseDTOList
,另一个dispatchSMSQList
。我想从中取出被屏蔽的号码列表dispatchSMSQList
。下面是我的工作代码片段。您能否指导如何将其转换为 Lambda 表达式或其正确性。?与测试数据的工作链接是https://repl.it/repls/FriendlyImmenseClasses
TreeSet<Long> blockedNumbersSet = new TreeSet<>();
for (MessagePermissionResponseDTO permission: messagePermissionResponseDTOList) {
if (permission.isBlocked()) {
blockedNumbersSet.add(permission.getPhoneNumber());
}
}
List<DispatchSMSQ> blockedNumbers = dispatchSMSQList.stream().filter(t -> blockedNumbersSet.contains(t.getMdn())).collect(Collectors.toList());
System.out.print("blockedNumbers-->"+ blockedNumbers.size());
解决方案
你可以这样做,
List<DispatchSMSQ> blockedNumbers = messagePermissionResponseDTOList.stream()
.filter(MessagePermissionResponseDTO::isBlocked)
.map(MessagePermissionResponseDTO::getPhoneNumber)
.collect(Collectors.collectingAndThen(Collectors.toSet(),
s -> dispatchSMSQList.stream()
.filter(d -> s.contains(d.getMdn())).collect(Collectors.toList())));
推荐阅读
- python - 具有 Decimal 类型的 Pandas Dataframe to_sql
- java - 使用 PVectors 使速度恒定
- java - 无法分配对象参数的新值
- python - 当标题名称包含`_`下划线时,获取Django Header值的正确格式是什么
- python - 如何计算通量差异并计算python中的出现次数
- typescript - Vue + Typescript - 无效类型
- sapui5 - F4搜索添加到智能表ui5
- web - 从网络聊天控件调用 Skype for Business
- corda - AWS 上的 Corda 分布式
- wpf - 当 TreeViewItem 包含带有 DropShadowEffect 的边框时,如何应用 TreeView 突出显示颜色?