我有以下端点:
public void save(@Valid @RequestBody SaveRequest request) {
demoService.save(request);
}
在 SaveRequest
,我传单productUuid
如下所示。@Data
public class SaveRequest {
private UUID productUuid;
private DetailsRequest detailsRequest;
}
这是我的服务方法:public void save(final SaveRequest request) {
detailService.getDetails(request.getProductUuid());
// code omitted
}
我想做的是;我只想通过productUuid
作为列表而不是单个元素。 private List<UUID> productUuid;
我以为我可以为每个productUuid
调用服务方法在 SaveRequest
,而不是通过使用与以下类似的方法来修改服务方法。然后我从 Controller 调用这个方法而不是 save
服务的方法。public void saveList(final SaveRequest request) {
request.getProductUuidList().stream()
.map(this::save)
.collect(Collectors.toList());
}
但我无法使用它。那么,我应该如何解决这个问题?如果是使用 saveList
的好方法方法和电话save
每个方法 productUuid
在 SaveRequest
,不改save
使用可能会更好方法。
最佳答案
现在更新答案。您的最后一个答案是正确的,因为 Streams 通常希望您对内部内容(在您的情况下为 UUID)做一些事情。
如果您不想为 UUID 设置消费者,则可以使用 for 循环:
public void saveList(final SaveRequest request) {
for (UUID uuid: request.getProductUuidList()) {
save(request);
}
}
如果您需要当前正在迭代的 UUID,请更改 save 方法以接受 UUID 作为参数public void saveList(final SaveRequest request) {
for (UUID uuid: request.getProductUuidList()) {
save(uuid, request);
}
}
正如你所看到的,最后一个方法现在有一个 UUID 的使用者,所以它也可以使用流来完成:public void saveList(final SaveRequest request) {
request.getProductUuidList().stream().forEach(
uuid -> save(uuid, request);
)
}
使用 stream()
这是可选的,但可以为您提供有用的功能,例如过滤器。
关于java - 转换为List后如何迭代方法中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68661933/