我尝试使用List
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());
过滤2个条件:
TypeError: 'int' object is not callable
我希望不提前创建结果对象。
答案 0 :(得分:9)
没有理由选择两个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());
}