优化此段代码 List<OrderDetailReq> orderDetailReqs = new ArrayList<>(); styleVO.getStyleColor().forEach(p -> { styleVO.getSizeGroup().forEach(p1 -> { OrderDetailReq OrderDetailReqItem = new OrderDetailReq(); OrderDetailReqItem.setColor(p.getName()); OrderDetailReqItem.setSize(p1.getName()); OrderDetailReqItem.setOrderNum(0); orderDetailReqs.add(OrderDetailReqItem); }); });
时间: 2024-02-06 09:04:28 浏览: 32
可以采用流式编程来优化这段代码,使用 `flatMap` 将颜色和尺码进行组合,然后使用 `map` 将其转换为 `OrderDetailReq` 对象。
优化后的代码如下所示:
```java
List<OrderDetailReq> orderDetailReqs = styleVO.getStyleColor().stream()
.flatMap(color -> styleVO.getSizeGroup().stream().map(size -> {
OrderDetailReq orderDetailReq = new OrderDetailReq();
orderDetailReq.setColor(color.getName());
orderDetailReq.setSize(size.getName());
orderDetailReq.setOrderNum(0);
return orderDetailReq;
}))
.collect(Collectors.toList());
```
这段代码使用了 Lambda 表达式和 Stream API,可读性和代码量都更加简洁。首先使用 `flatMap` 将颜色和尺码进行组合,然后使用 `map` 将组合后的结果转换为 `OrderDetailReq` 对象,最后使用 `collect` 方法将所有对象收集到一个列表中。
相关问题
List<EntityFieldDefine> fields = new ArrayList<>();和List<EntityFieldDefine> fields = new ArrayList();用起来有什么不同
`List<EntityFieldDefine> fields = new ArrayList<>();` 和 `List<EntityFieldDefine> fields = new ArrayList();` 在功能上是相同的,都是创建了一个空的 `ArrayList` 对象来存储 `EntityFieldDefine` 类型的元素。
唯一的区别在于 Java 7 之前的版本不支持使用 `<>` 语法进行类型推断,需要显式地指定类型参数。因此,如果你在 Java 7 或更早的版本中使用 `List<EntityFieldDefine> fields = new ArrayList<>();` 这样的语法,编译器将无法推断出 `ArrayList` 的类型参数,导致编译错误。
而在 Java 8 及更高版本中,引入了钻石操作符 `<>`,可以通过类型推断自动推断出类型参数。因此,你可以使用 `List<EntityFieldDefine> fields = new ArrayList<>();` 这样的语法,编译器会根据变量声明的类型自动推断出 `ArrayList` 的类型参数为 `EntityFieldDefine`。
总结来说,使用 `List<EntityFieldDefine> fields = new ArrayList<>();` 可以使代码更加简洁,并且兼容 Java 8 及更高版本。但如果你需要向下兼容到 Java 7 或更早的版本,那么应该使用 `List<EntityFieldDefine> fields = new ArrayList<EntityFieldDefine>();` 来显式指定类型参数。
List<CustomerInfo> customerInfoList = new ArrayList<>(); List<PostLoanOrder> orderList = new ArrayList<>(); List<PostControllerLegalInfo> plistInfo = new ArrayList<>(); List<PostLoanReceipt> receipts = new ArrayList<>(); List<PostRepaymentPlan> plans = new ArrayList<>(); List<AuthBatchAndSendDto> authBatchAndSendDtoList = new ArrayList<>(); 改进代码
可以使用 diamond operator 来简化代码,还可以使用 var 关键字来更清晰地表达变量类型:
```java
var customerInfoList = new ArrayList<CustomerInfo>();
var orderList = new ArrayList<PostLoanOrder>();
var plistInfo = new ArrayList<PostControllerLegalInfo>();
var receipts = new ArrayList<PostLoanReceipt>();
var plans = new ArrayList<PostRepaymentPlan>();
var authBatchAndSendDtoList = new ArrayList<AuthBatchAndSendDto>();
```
此外,如果这些变量都是在同一个类中使用的,可以将它们作为类的成员变量,这样代码会更加简洁。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)