java - 转换为List后如何迭代方法中的元素?

标签 java arrays spring list java-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;我以为我可以为每个productUuid调用服务方法在 SaveRequest ,而不是通过使用与以下类似的方法来修改服务方法。然后我从 Controller 调用这个方法而不是 save服务的方法。
public void saveList(final SaveRequest request) {
    request.getProductUuidList().stream()
        .map(this::save)
        .collect(Collectors.toList());
}
但我无法使用它。那么,我应该如何解决这个问题?如果是使用 saveList 的好方法方法和电话save每个方法 productUuidSaveRequest ,不改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/

相关文章:

javascript - 定义 API GATEWAY 列表类型参数

java - 在springboot应用程序中配置mvc异步任务执行器

java - 你能帮助理解如何使用 JOIN 与 spring-repository 吗?

java初始化对象数组

java.lang.NoSuchMethodError : javax. servlet.http.HttpServletRequest.startAsync 错误

java - 试图获取请求参数以访问登录tomcat

javascript - 如何在 react 中获取对象中的嵌套数组?

c - 动态分配的字符串的动态分配的数组

java - Tomcat 尝试解析 RESTful Spring MVC 服务中的 JSP 文件

java - 从 Google map API 读取 JSON 字符串