Java 对象合并:多种方法实现
合并两个 Java 对象的方法有很多种,具体取决于对象的类型和合并的意义。以下是一些常用的方法:
- 使用 Java 8 中的 Stream API:如果两个对象是同一类型,可以使用 Stream API 中的 concat() 方法合并它们。例如:
 
List<String> list1 = Arrays.asList('a', 'b', 'c');
List<String> list2 = Arrays.asList('d', 'e', 'f');
List<String> mergedList = Stream.concat(list1.stream(), list2.stream())
                                .collect(Collectors.toList());
- 使用 Apache Commons BeanUtils:如果两个对象是不同类型的 JavaBean,可以使用 BeanUtils 中的 copyProperties() 方法将一个对象的属性复制到另一个对象中。例如:
 
Person person1 = new Person('Alice', 25);
PersonDTO personDTO = new PersonDTO();
BeanUtils.copyProperties(person1, personDTO);
Person person2 = new Person();
BeanUtils.copyProperties(personDTO, person2);
- 使用 Jackson ObjectMapper:如果两个对象是 JSON 格式的字符串,可以使用 Jackson 库中的 ObjectMapper 来合并它们。例如:
 
String json1 = '{\"name\": \"Alice\", \"age\": 25}';
String json2 = '{\"email\": \"alice@example.com\"}';
ObjectMapper objectMapper = new ObjectMapper();
JsonNode node1 = objectMapper.readTree(json1);
JsonNode node2 = objectMapper.readTree(json2);
ObjectNode mergedNode = (ObjectNode) node1;
mergedNode.setAll((ObjectNode) node2);
String mergedJson = objectMapper.writeValueAsString(mergedNode);
- 手动合并属性:如果两个对象的属性不是 JavaBean 或 JSON 格式的,可以手动合并它们的属性。例如:
 
public class Person {
    private String name;
    private int age;
    public Person merge(Person other) {
        if (other != null) {
            if (other.getName() != null) {
                this.name = other.getName();
            }
            this.age = other.getAge();
        }
        return this;
    }
}
Person person1 = new Person('Alice', 25);
Person person2 = new Person('Bob', 30);
Person mergedPerson = person1.merge(person2);
原文地址: https://www.cveoy.top/t/topic/mMk6 著作权归作者所有。请勿转载和采集!