将不同对象类型的两个映射合并为一个,并在映射 1 中完成对象值
Megre two maps of dfferent object type into one with completing object value in map1
是否可以合并具有相同键但对象不同的两个地图,并最终完成第二张地图数据的地图?
public class Employee {
private String firstName;
private String lastName;
private Address address;
}
public class Address {
private String city;
private String country;
private String street;
}
Map<String, Employee> map1 = new HashMap<>();
Map<String, Address> map2 = new HashMap<>();
//We need map 3 with value in employee completed with address.
Map<String, Employee> map3 = new HashMap<>();
如果键值相同,您可以轻松合并两个地图。
如果你的代码中有你提到的地图,那么下面的代码应该可以正常工作。
map1.keySet().stream().forEach(key -> {
Employee employee = map1.get(key);
employee.address = map2.get(key);
map3.put(key, employee);
});
假设 Employee
class 有一个 setter 方法用于 address
你可以这样做:
map1.forEach((key, employee) -> employee.setAddress(map2.get(key)));
如果需要实例化一个新的Map
:
private Employee setAddress(Map.Entry<String, Employee> entry) {
Employee employee = entry.getValue();
return new Employee(employee.getFirstName(), employee.getLastName(),
map2.get(entry.getKey()));
}
那么你可以这样做:
Map<String, Employee> map3 = map1.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, this::setAddress));
是否可以合并具有相同键但对象不同的两个地图,并最终完成第二张地图数据的地图?
public class Employee {
private String firstName;
private String lastName;
private Address address;
}
public class Address {
private String city;
private String country;
private String street;
}
Map<String, Employee> map1 = new HashMap<>();
Map<String, Address> map2 = new HashMap<>();
//We need map 3 with value in employee completed with address.
Map<String, Employee> map3 = new HashMap<>();
如果键值相同,您可以轻松合并两个地图。 如果你的代码中有你提到的地图,那么下面的代码应该可以正常工作。
map1.keySet().stream().forEach(key -> {
Employee employee = map1.get(key);
employee.address = map2.get(key);
map3.put(key, employee);
});
假设 Employee
class 有一个 setter 方法用于 address
你可以这样做:
map1.forEach((key, employee) -> employee.setAddress(map2.get(key)));
如果需要实例化一个新的Map
:
private Employee setAddress(Map.Entry<String, Employee> entry) {
Employee employee = entry.getValue();
return new Employee(employee.getFirstName(), employee.getLastName(),
map2.get(entry.getKey()));
}
那么你可以这样做:
Map<String, Employee> map3 = map1.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, this::setAddress));