将不同对象类型的两个映射合并为一个,并在映射 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));