大概代码如下,将一个集合值的某一属性赋值给另一个集合,大量数据情况下有没有好的解决办法。
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
List<Order> orderList = new ArrayList<>();
for (Order order : orderList) {
for (User user : userList) {
if (order.getUserId().equals(user.getId())) {
order.setUserPhone(user.getPhone());
}
}
}
}
static class User {
private String id;
private String phone;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
static class Order {
private String userId;
private String userPhone;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
}
耗时长是因为对userList执行顺序查找算法,时间复杂度是O(n),总体时间复杂度是O(n*m),如果数据量太大,可以把顺序查找换成hash查找,时间复杂度降低到O(1),总体时间复杂度是O(m)。
用HashMap为userList建立索引即可。