Java 将多个对象与列表字段合并
我正在处理具有字符串列表作为其属性的对象:Java 将多个对象与列表字段合并,java,merge,Java,Merge,我正在处理具有字符串列表作为其属性的对象: public class MyObjectOne { private List<String> listOne; private List<String> listTwo; private MyObjectTwo myObjectTwo; } public class MyObjectTwo { private List<String> listOne; priva
public class MyObjectOne {
private List<String> listOne;
private List<String> listTwo;
private MyObjectTwo myObjectTwo;
}
public class MyObjectTwo {
private List<String> listOne;
private List<String> listTwo;
}
我想合并多个MyObjectOne对象,
通过这种方式,我得到一个新对象,其中所有列表都被合并,包括嵌套对象MyObjectTwo中的列表
我意识到可能有更好的方法来组织程序,这样我就不必这么做了,但我还是坚持使用这段代码
有没有办法在不必为对象显式编写映射器的情况下实现这一点?实际上,每个对象都有10+个这样的列表属性,并且有多个嵌套对象,因此将其全部写出来将是一件非常痛苦的事情 将以下方法添加到MyObjectOne中,并将listOne和listTwo的getter添加到MyObjectTwo类中。顺便说一句,你应该先自己尝试一下
public List<String> merge(){
List<String> result = new ArrayList();
result.addAll(listOne);
result.addAll(listTwo);
result.addAll(myObjectTwo.getListOne());
result.addAll(myObjectTwo.getListTwo());
return result;
}
我会使用接口,它可以返回所有要合并的列表和所有嵌套对象。 像这个:
interface Mergable {
List<List<String>> getAllLists();
List<Mergable> getAllNestedObjects();
}
class MyObjectOne implements Mergable {
private List<String> listOne;
private List<String> listTwo;
private MyObjectTwo myObjectTwo;
@Override
public List<List<String>> getAllLists() {
return Stream.of(listOne, listTwo).collect(toList());
}
@Override
public List<Mergable> getAllNestedObjects() {
return Stream.of(myObjectTwo).collect(toList());
}
}
class MyObjectTwo implements Mergable {
private List<String> listOne;
private List<String> listTwo;
@Override
public List<List<String>> getAllLists() {
return Stream.of(listOne, listTwo).collect(toList());
}
@Override
public List<Mergable> getAllNestedObjects() {
return Collections.emptyList();
}
}
然后通过递归将它们合并到列表中或存储到任何地方 我不想要一个大列表,我想要一个新对象,其中listOne字段全部合并到listOne属性中,listTwo字段全部合并到listTwo属性中,等等。另外,我可能应该提到,我不能编辑对象本身。@Spacejockey请编辑这个问题,因为不清楚这是一个要求。