Reflection 合并两个对象的值

Reflection 合并两个对象的值,reflection,merge,java-8,Reflection,Merge,Java 8,我有一个复杂的java类,如下所示 Class FinalValue { List<Item> items; List<Option> options; Class Item/Option { String itemId/optionId; Type type; Rate rate; String currency; } Class Rate { Integer id; BigDecimal rateAmount; Boolean i

我有一个复杂的java类,如下所示

Class FinalValue {
List<Item> items;
List<Option> options;

Class Item/Option {
 String itemId/optionId;
 Type type;
 Rate rate;
 String currency;
}

 Class Rate {
    Integer id;
    BigDecimal rateAmount;
    Boolean isActive;
    }
 }
类最终值{
清单项目;
列出选项;
类别项目/选项{
字符串itemId/optionId;
类型;
比率;
字符串货币;
}
等级率{
整数id;
较大的小数位数;
布尔反作用;
}
}
我想用一些条件将list
list
的值合并为一个
FinalValue
。大多数值将是相同的,即使它是列表,但如果任何值不同,则需要同时设置这两个值

我正在考虑使用for循环,比较每个内部元素,如果它们相同,则设置一次,如果它们不同,则添加所有可能的元素


有没有更好的方法来解决这个问题,而不是循环到每个级别并添加值

几个问题。。。合并操作应该合并什么?你说的更好是什么意思?更快?更优雅?您当前的方法是什么,请添加代码。我还没有编码,但当前方法用于循环,并在新对象中不断设置值。如果有不同的值,则同时设置它们。具体问题是什么?您可以这样做:
FinalValue=list.stream().reduce(new FinalValue(),FinalValue::merge)FinalValue
类中,您应该定义
merge
方法<代码>公共最终值合并(FinalValue FinalValue){返回新的最终值().items(FinalValue.getItems()).options(FinalValue.getOptions());}
选项
可以这样做
公共最终值选项(列表选项){this.option=Stream.concat(this.option.Stream()),options.stream()).collect(Collectors.toList());}
如果两个对象中相同项目的速率不同,谢谢。我想把两者合并。有了上述方法,怎么可能呢?