java - 具有 2 个过滤条件的 java 流
问题描述
我正在尝试使用 2 个条件 aList
进行过滤Stream
:
private List<String> filterResources(final List<Resource> resources, final String resourceType, final String propertyName) {
List<String> result = resources.stream()
.filter(resource -> resource.isResourceType(resourceType))
.map(Resource::getValueMap)
.map(valueMap -> valueMap.get(propertyName, StringUtils.EMPTY))
.collect(Collectors.toList());
return result.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList());
我不想创建结果对象,在此先感谢。
解决方案
Stream
两条管道没有理由。Stream
您可以在终端操作之前对原始管道应用第二个过滤器:
private List<String> filterResources(final List<Resource> resources, final String resourceType, final String propertyName) {
return resources.stream()
.filter(resource -> resource.isResourceType(resourceType))
.map(Resource::getValueMap)
.map(valueMap -> valueMap.get(propertyName, StringUtils.EMPTY))
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
}
推荐阅读
- java - 获取 LocalContainerEntityManagerFactoryBean 以执行特定的架构和数据脚本
- android - 当镜头在 API < 29 中为单色时,使用 Camera2 确定
- json - 将带有字符串的列表转换为json pyspark
- javascript - 如何在adonisjs中进行动态授权?
- json - VB.Net_Having 从 JSON 读取令牌时出现问题
- kotlin - CharBuffer 到字符串?
- docker - Docker-compose 卷模式选项
- spring - propertySources 显示为空(Spring Cloud Config)
- c++ - 具有 3 个点的平面的欧拉角:围绕 x、y 和 z 旋转
- java - 如何修复 Java Mail 在 while 循环中不显示新电子邮件