我有一个像下面那样的复合VO;
MyCompositeVO {
MyActionVO myAction;
MyPartnerVO partner;
}
我想返回此复合对象的列表,如下所示;
List<MyCompositeVO> results = new ArrayList<MyCompositeVO>();
同样通过查询执行,我得到以下2个列表;
List<MyAction> myActions;
List<MyPartnerVO> myPartnerVOList;
每个类都有一个共同的属性; myPartnerId (可能对合并有用)
现在我想循环遍历这些列表并返回合并的输出。我的粗略代码如下所示;
MyCompositeVO compositeVO = new MyCompositeVO();
for (MyPartnerVO myPartner : myPartnerVOList) {
compositeVO.setPartner(myPartner);
}
for (MyAction action : myActions) {
MyActionVO myActionVO = new MyActionVO();
partnerActionVO.copyPropertiesFrom(action);
compositeVO.setMyAction(myActionVO);
}
results.add(compositeVO);
如何合并上述2个循环并返回&#34;结果&#34; ?
注意: 在&#34; myActions&#34;中可能没有任何内容。在那种情况下 compositeVO.setMyAction()需要设置为null
答案 0 :(得分:0)
你需要一个通过你的合作伙伴的外部循环(我从你的描述中假设它们是最终对象的重要部分)。对于每个合作伙伴,然后循环并寻找匹配的操作。
我的代码假定存在一些函数,并假设如果找不到匹配的函数,您的操作将适当null
。
for (MyPartnerVO myPartner : myPartnerVOList) {
MyCompositeVO compositeVO = new MyCompositeVO();
compositeVO.setPartner(myPartner);
for (MyAction action : myActions) {
if (action.getPartnerID() == myPartner.getID()) { // or .equals()
MyActionVO myActionVO = new MyActionVO();
myActionVO.copyPropertiesFrom(action);
compositeVO.setMyAction(myActionVO);
break;
}
}
results.add(compositeVO);
}