List<AttrEntity> attrEntityList = productAttrValueEntities.stream().map((item) -> { AttrEntity attrEntity = attrService.getById(item.getId()); return attrEntity; }).filter((item) -> { System.out.println("过滤item:"+item); return item.getSearchType().equals(1); }).collect(Collectors.toList());
时间: 2024-04-11 20:31:05 浏览: 13
你的代码段中创建了一个名为`attrEntityList`的`List<AttrEntity>`对象,其中包含了对`productAttrValueEntities`集合中的元素进行一系列操作的流水线操作。
首先,使用`stream()`方法将`productAttrValueEntities`转换为流,然后使用`map()`方法对流中的每个元素进行映射操作。在这里,每个元素都会通过匿名函数`(item) -> {}`进行处理。匿名函数中调用了`attrService.getById(item.getId())`方法,该方法根据传入的`item.getId()`获取相应的`AttrEntity`对象,并将其赋值给`attrEntity`。
接下来,在流水线中使用`filter()`方法对每个元素进行过滤操作。在这里,匿名函数`(item) -> {}`判断了`item.getSearchType().equals(1)`的结果,如果为真,则将该元素保留在流中,否则将其过滤掉。
最后,使用`collect()`方法将过滤后的流中的元素收集到一个新的列表中,并将其赋值给`attrEntityList`。
需要注意的是,在过滤操作中,每个元素的信息通过调用`System.out.println()`方法打印到控制台。
相关问题
List<DataPermissionSchemaEo> dataPermissionSchemaList = dataPermissionSchemaEoList.stream().map(dataPermissionSchemaEo -> { List<SchemaRowRuleEo> schemaRowRules = userRowRuleList.stream() .filter(schemaRule -> dataPermissionSchemaEo.getId().equals(schemaRule.getSchemaId())) .collect(Collectors.toList()); List<SchemaColumnRuleEo> schemaColumnRules = userColumnRuleList.stream() .filter(schemaRule -> dataPermissionSchemaEo.getId().equals(schemaRule.getSchemaId())) .collect(Collectors.toList()); if(!schemaRowRules.isEmpty() || !schemaColumnRules.isEmpty()) { DataPermissionSchemaEo dataPermissionSchema = new DataPermissionSchemaEo(); dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode()); dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode()); dataPermissionSchema.setSchemaRowRuleEoList(schemaRowRules); dataPermissionSchema.setSchemaColumnRuleEoList(schemaColumnRules); return dataPermissionSchema; } return null; }).filter(Objects::nonNull).collect(Collectors.toList());单独做成一个方法
可以将这段代码单独做成一个方法,例如:
```java
public List<DataPermissionSchemaEo> filterDataPermissionSchemas(List<DataPermissionSchemaEo> dataPermissionSchemaEoList, List<SchemaRowRuleEo> userRowRuleList, List<SchemaColumnRuleEo> userColumnRuleList) {
return dataPermissionSchemaEoList.stream().map(dataPermissionSchemaEo -> {
List<SchemaRowRuleEo> schemaRowRules = userRowRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getId().equals(schemaRule.getSchemaId()))
.collect(Collectors.toList());
List<SchemaColumnRuleEo> schemaColumnRules = userColumnRuleList.stream()
.filter(schemaRule -> dataPermissionSchemaEo.getId().equals(schemaRule.getSchemaId()))
.collect(Collectors.toList());
if (!schemaRowRules.isEmpty() || !schemaColumnRules.isEmpty()) {
DataPermissionSchemaEo dataPermissionSchema = new DataPermissionSchemaEo();
dataPermissionSchema.setDatabaseCode(dataPermissionSchemaEo.getDatabaseCode());
dataPermissionSchema.setSchemaCode(dataPermissionSchemaEo.getSchemaCode());
dataPermissionSchema.setSchemaRowRuleEoList(schemaRowRules);
dataPermissionSchema.setSchemaColumnRuleEoList(schemaColumnRules);
return dataPermissionSchema;
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
}
```
然后在其他地方可以调用该方法来过滤数据权限模式列表。
List<Long> skuIds = productPublishSkuEntities.stream().map(e -> e.getId()).collect(Collectors.toList())的详解
这是一个Java代码的行,用途是将 productPublishSkuEntities 中每个元素的 id 属性提取出来,并放到一个 List<Long> 类型的变量 skuIds 中。具体来说,这行代码使用了 Java 8 中的 Stream API,调用 map() 方法将每个元素的 id 属性映射为一个 Long 类型的值,然后使用 collect() 方法将这些值收集到一个 List<Long> 中。简而言之,这行代码的作用是将一个实体对象集合中的 id 值提取出来,组成一个长整型的列表。