我有两个如下列表:
List<TemplateObject> list1;
List<InUseObject> list2;
我需要从模板读取(源),并通过获取从模板复制的所有元素值来创建InUse的新实例(目标)。给定所有字段/元素在两个列表中都具有相同的数据类型。
有多种方法可以实现它(例如克隆,浅/深复制)。
问题:如何使用Java 8+实现它。优选地,一个衬里可以是?
您可以这样使用Stream#map
:
List<InUseObject> list2 = list1.stream()
.map(obj -> new InUseObject(obj.getId(), obj.getPropertyname(), obj.getPropertyvalue()))
.collect(Collectors.toList());
您还可以在InUseObject
接受时定义一个构造函数TemplateObject
:
public InUseObject(final TemplateObject obj) {
this(obj.getId(), obj.getPropertyname(), obj.getPropertyvalue());
}
然后,您可以在映射时使用构造函数引用。
List<InUseObject> list2 = list1.stream()
.map(InUseObject::new)
.collect(Collectors.toList());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句