OrderModel(int customerid, int bookid)
QueryModel(int customerid, int[] bookid)(注意两个model之间的差别)ArrayList orderArray =new ArrayList();
orderArray.add(orderModel1);
orderArray.add(orderModel2);
.
.
.
orderArray.add(orderModelN);orderArray 是包含了多个OrderModel的ArrayList,并且OrderModel之间customerid有可能有相等;
现在想得到一个新的ArrayList,把customerid相等的OrderModel要合并成一个QueryModel,然后添加到这个新的ArrayList里,有没有什么好办法?
请各位大大赐教!

解决方案 »

  1.   

    1 1 2 2 3之后你只有1 2 3是吧
    把所有数据转到Set中,然后再使用List.addAll(Collection)方法转到另一个List
      

  2.   

    你就不该使用List数据结构,这很明显是一个映射,应该使用Map数据结构,以customerid为key。
    你看看org.apache.commons.collections.map.MultiValueMap,可以解决你的问题。
      

  3.   

    就数据结构本身来说是用Map比较好,但是实际情况是无法使用Map;楼上所说的要用到apache的包,我不是很想再引进一个包只为解决一个问题。想单纯从数据结构上想办法。
      

  4.   

    看看这个贴 http://topic.csdn.net/u/20090728/15/82c580f8-b65a-4a70-8420-943d5156a800.html也是合并相同的数据。
      

  5.   


    ArrayList keyArray = new ArrayList();
    for(int i = 0 ; i < allRuleArray.size(); i++)
    {
    RuleModel ruleModel = (RuleModel)allRuleArray.get(i);
    if(!keyArray.contains(ruleModel.getKey()))
    keyArray.add(ruleModel.getKey());
    }

    HashMap destMap = new HashMap();
    for(int j = 0 ; j < keyArray.size(); j++)
    {
    String key = (String)keyArray.get(j);
    ArrayList ruleColumnArray = new ArrayList();
    for(int k = 0 ; k < allRuleArray.size(); k++)
    {
    RuleModel ruleModel = (RuleModel)allRuleArray.get(k);
    if(key == ruleModel.getKey())
    {
    ruleColumnArray.add(ruleModel);
    }
    }
    destMap.put(key, ruleColumnArray);
    }自己写了点儿代码,先不考虑效率,折腾出来了
      

  6.   

    不知道是不是看错了,后面的代码完全没有必要啊,直接把
    if(!keyArray.contains(ruleModel.getKey()))
         keyArray.add(ruleModel.getKey());
    }改成
    if(!keyArray.contains(ruleModel))
         keyArray.add(ruleModel);
    }
    就可以了啊,当然你要重载一下RuleModel的equals方法,在那里判断下key是否相等
      

  7.   

    说了key可能相等但是rulemodel里面的值不等,你那个方法直接把ruleModel删除了,我想要的结果不是你的一楼说的11,22,22,33变成11,22,33
      

  8.   

    这种想法是没有必要的理由的
    使用api中实现的高效代码对程序的好处远远大于坏处
      

  9.   

    重写OrderModel这个类的hashCode和equals方法。
    只要customerid相等,就判断两个OrderModel相等。
    然后用orderArray的retainAll(orderArray2)方法。 得到的就是你想要的。
      

  10.   

    用Map应该能达到你的要求.你就不应该用ArrayList.