假設我有兩個串列,其中包含不同型別的不同域物件:Customer和Employee.
并且這些物件具有共同的companyId屬性。
Customer班級:
public static class Customer {
private Long companyId;
private String companyName;
}
Employee班級:
public static class Employee {
private Long companyId;
private String companyName;
}
Employee有這個共同companyId分配的屬性,但companyName缺少。
我有兩個清單:
List<Customer> customerList;
List<Employee> employeeList;
我想要做的是companyName為from == ofEmployeecompanyIdEmployeecompanyIdCustomer
首先,我嘗試了兩個嵌套for回圈,但如果我有超過 1000 個元素,我認為這不是性能問題。
在性能方面實作這一目標的最佳方法是什么?
也許將資料存盤customerList為 a HashMap,然后為每個Employeedoget(companyId)或 so 存盤?
uj5u.com熱心網友回復:
你想的方向是對的。與使用嵌套回圈相比,生成每個客戶的Map哪些關聯companyId與 acompanyName將是一種更高效的方法for。
當我們有 時Map,唯一剩下的就是遍歷串列,Employee如果它companyId存在于 Map 中,則將 替換companyName為存盤在 Map 中的串列。
public static void setCompanyNames(List<Customer> customerList,
List<Employee> employeeList) {
Map<Long, String> companyNameByCustomerId = customerList.stream()
.collect(Collectors.toMap(
Customer::getCompanyId, // generating Keys
Customer::getCompanyName, // generating Values
(left, right) -> left // resolving duplicates (this argument is need if there could be several customers with the same companyId)
));
for (Employee employee: employeeList) {
Long id = employee.getCompanyId();
if (companyNameByCustomerId.containsKey(id)) {
employee.setCompanyName(companyNameByCustomerId.get(id));
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519800.html
標籤:爪哇列表循环哈希图
上一篇:如何從物件反應中的陣列中過濾資料
