【发布时间】:2018-12-18 16:02:47
【问题描述】:
我有两个用户数组列表,我需要通过使用用户的电子邮件地址搜索来找到一个用户。这是我的代码。它有效,但可以更有效地完成吗?
public String getUserId(ArrayList<User> newUsers, ArrayList<User> oldUsers, String email) {
String userId = null;
for (User user1 : newUsers) {
if (user1.email.equals(email)) {
userId = user1.uid;
}
}
if(userId == null){
for (User user2 : oldUsers) {
if (user2.email.equals(email)) {
userId = user2.uid;
}
}
}
return userId;
}
这里是 User 类。
public class User {
public String uid;
public String email;
public String name;
public String phoneNumber;
public User() {
}
}
【问题讨论】:
-
使用
Map代替List,并以电子邮件作为键。如果这不是一个选项,那么一旦找到匹配项,就会从循环中break。另请参阅:并行流。 -
取决于您的数组列表是排序的还是未排序的。如果它们未排序,则它已经是最接近最佳可能的复杂性。您可以做的一件事是,一旦找到匹配项,立即停止迭代其他元素和
return。