Collections java8如何收集数据并将其作为对象的属性添加到列表中
在java8之前,我们编写如下代码:Collections java8如何收集数据并将其作为对象的属性添加到列表中,collections,java-8,java-stream,Collections,Java 8,Java Stream,在java8之前,我们编写如下代码: List<ResultDTO> resources = Lists.newArrayList(); List<Product> productList = details.getProducts(); for (Product product : productList) { ResultDTO result = new ResultDTO(); result.
List<ResultDTO> resources = Lists.newArrayList();
List<Product> productList = details.getProducts();
for (Product product : productList) {
ResultDTO result = new ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
resources.add(resourceDetail);
}
List<ResultDTO> resources = Lists.newArrayList();
details.getProducts.stream().forEach( product -> {
ResultDTO result = new ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
resources.add(resourceDetail);
} );
List resources=Lists.newArrayList();
List productList=details.getProducts();
对于(产品:productList){
ResultDTO result=新的ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
添加(resourceDetail);
}
Java8我是这样写的:
List<ResultDTO> resources = Lists.newArrayList();
List<Product> productList = details.getProducts();
for (Product product : productList) {
ResultDTO result = new ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
resources.add(resourceDetail);
}
List<ResultDTO> resources = Lists.newArrayList();
details.getProducts.stream().forEach( product -> {
ResultDTO result = new ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
resources.add(resourceDetail);
} );
List resources=Lists.newArrayList();
details.getProducts.stream().forEach(产品->{
ResultDTO result=新的ResultDTO();
result.setName(product.getName);
result.setNumber(product.getNumber);
添加(resourceDetail);
} );
我想知道当我们遍历流时,是否有一些技巧来创建ResultTo对象,设置它的属性,然后创建一个列表
提前感谢。创建列表并在流操作中修改它是一种反模式。您应该让流为您创建列表:
List<ResultDTO> resources =
details.getProducts()
.stream()
.map(this::createResultDTO)
.collect(Collectors.toList());
列出资源=
详细信息。getProducts()
.stream()
.map(此::CreateResultTo)
.collect(Collectors.toList());
createResultTo方法将从产品创建ResultTo(当然,您可以将其代码内联到映射中,但可读性要差得多)。如JB所述,您可能希望从流中创建列表
List<ResultDTO> resources = details.getProducts()
.stream()
.map(this::createResultDTO)
.collect(Collectors.toList());
您可以将此方法放在同一个类中并使用
.map(this::createResultTo)
或者在另一个名为ProductResultTo
的类中,使用以下命令:
.map(productResultTo::createResultTo)
我个人可能会在productResultTo
上添加一个名为fromProduct
的静态工厂方法,这样您就可以编写map(productResultTo::fromProduct)