java - 在 Java 中同时迭代多个 arrayList..最有效

标签 java list collections

我正在编写一个 API,它创建一个 User 对象列表,然后使用该列表调用第三方 Web 服务。然后,第 3 方 Web 服务会返回包含用户详细信息的 UserDetails 对象列表。例如:

Class User{
String id;
String name;
}

使用上述 User 对象构造一个列表,然后将其传递给第 3 方 Web 服务。

List<User> users = new ArrayList <User>();

然后,第 3 方 Web 服务会使用 UserDetails 对象列表进行响应。

Class UserDetails {
    String id;
    String email;
    String accountNumber;
    ...
    ...
    }


List<UserDetails> userDetails = new ArrayList <UserDetails>();

现在,为了构建 API 的响应,我构建了一个 UserResponse 对象列表,其中包含 User 和 UserDetails 对象中的混合字段。

Class UserResponse{
String id;
String name;
String email;
String accountNumber;
....
...

}

要构造此 UserResponse 对象列表,我必须迭代用户列表和 UserDetails 列表,然后检查 id 是否匹配,然后构造 UserRepsonse 对象,然后将它们添加到列表中。代码如下。

List <UserResponse> userResponseList = new ArrayList<UserResponse>();
for(User user : userRequest){
 for(UserDetails userDetail: userDetails){

if(user.getid().equalsIgnoreCase(userDetail.getId())){
    UserResponse userReponse = new UserResponse ();
    userReponse.setId(user.getId());
    userReponse.setName(user.getName());
    userReponse.setEmail(userDetail.getEmail());
    userReponse.setAccountNumber(userDetail.getAccountDetail());

    userResponseList.add(userReponse);

    }
 }
}

然后返回userResponseList。

上面的代码有效。但迭代 2 个列表才是让我害怕的地方。我的 API 在 1 个请求中可以容纳大约 200 个用户。因此,我将 200 个用户对象的列表发送到第 3 方服务,然后第 3 方 Web 服务以 200 个 userDetails 对象的列表进行响应。

这意味着我将在双迭代器中迭代 200*200 个项目。

有没有更好、更有效的方法来执行这个逻辑,而不是迭代这么多次?

提前谢谢..

最佳答案

既然您使用 id 字段作为公共(public)标识符,对于这两个对象,为什么不尝试使用按 id 分组的 UserDetails 制作一个映射。之后,您迭代用户列表并使用 map.get(id) 检索每个用户的详细信息,以便您可以基于这两种类型的对象构建所需的对象列表。

关于java - 在 Java 中同时迭代多个 arrayList..最有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529985/

相关文章:

java - 如何通过属性查找ArrayList中的对象

java - 一次一个地执行一个方法

java - 在单个小程序中显示多个图像

python - 将列表字典转换为元组字典

python - 选择满足条件的元素

java - 使用给定的字符串参数搜索数组元素

c# - 我不认为我正在修改这个集合

java - 初始化类型由用户指定的 ArrayList

java - 为什么我的二维数组将 'x' 显示为 120?

rbind data.frames 列表,同时在 R 中保留 NULL 元素