转换为List后如何在方法中迭代元素?
How to iterate element in a method after converting to List?
我有以下端点:
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;
我认为我可以为 SaveRequest
中的每个 productUuid
调用服务方法,而不是使用与以下类似的方法修改服务方法。然后我从控制器调用这个方法而不是服务的 save
方法。
public void saveList(final SaveRequest request) {
request.getProductUuidList().stream()
.map(this::save)
.collect(Collectors.toList());
}
但是我无法使用它。那么,我应该如何解决这个问题?如果使用 saveList
方法并为 SaveRequest
中的每个 productUuid
调用 save
方法是一种好方法,那么在不更改 save
的情况下使用它可能会更好]方法。
正在更新答案。您最后的回答是正确的,因为 Streams 通常希望您对内部的内容(在您的情况下为 UUID)执行某些操作。
如果你不想让 UUID 有消费者,你可以使用 for 循环:
public void saveList(final SaveRequest request) {
for (UUID uuid: request.getProductUuidList()) {
save(request);
}
}
如果您需要当前正在迭代的 UUID,请更改保存方法以接受 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()
是可选的,但可以为您提供有用的功能,例如过滤器。
我有以下端点:
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;
我认为我可以为 SaveRequest
中的每个 productUuid
调用服务方法,而不是使用与以下类似的方法修改服务方法。然后我从控制器调用这个方法而不是服务的 save
方法。
public void saveList(final SaveRequest request) {
request.getProductUuidList().stream()
.map(this::save)
.collect(Collectors.toList());
}
但是我无法使用它。那么,我应该如何解决这个问题?如果使用 saveList
方法并为 SaveRequest
中的每个 productUuid
调用 save
方法是一种好方法,那么在不更改 save
的情况下使用它可能会更好]方法。
正在更新答案。您最后的回答是正确的,因为 Streams 通常希望您对内部的内容(在您的情况下为 UUID)执行某些操作。
如果你不想让 UUID 有消费者,你可以使用 for 循环:
public void saveList(final SaveRequest request) {
for (UUID uuid: request.getProductUuidList()) {
save(request);
}
}
如果您需要当前正在迭代的 UUID,请更改保存方法以接受 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()
是可选的,但可以为您提供有用的功能,例如过滤器。