Java Merge 2循环中的单独列表

时间:2014-09-15 11:53:19

标签: java arraylist

我有一个像下面那样的复合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

1 个答案:

答案 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);
}