我这里有一个集合对象,但集合对象中有很多的数据,那么我应该怎么把这个集合中的数据迭代出来并进行比较,如果数据相等就相加.
请指教

解决方案 »

  1.   

    好.我再说具体点.
    需要是这样的.比如说我有一个定单(OrderInfo),在这个定单下面有定单详情(OrderDetail),客户在定购产品时,很可能一个定单重复定购了某类产品,那么在定单详情下就会出现在多个同类产品定购记录.
    现在为了汇总工作,要记录客户某次定单中总的定单金额,某类产品的定购金额,所以就需要把重复定购了的同类产品进行合并处理.那么在这个定单详情(OrderDetail)集合中.如何比较得出这些定购记录哪些是同一类产品.
      

  2.   

    首先,在数据库中,如果要解决上述问题,肯定就是用group by product就可以了。
    如果需要用java程序实现,则可以使用集合操作来实现。
    大概流程是:
    在产品订购记录中循环:此为一个集合的循环。
    使用Hashtable,如果出现了产品,则查找产品是否存在,如果存在,则对相应的总数的信息进行修改。
    如果不存在,则生成一个新的记录,并且将其数量作为value的值。
    模仿的代码为:
    /**
     * 传入的参数为承载OrderInfo的集合。
     * @return (产品名,总价值)的集合。
     */
    public Hashtable calPrice(List orderList) {
    Hashtable hash = new Hashtable();

    for(int i = 0; i < orderList.size(); i++) {
    OrderInfo orderInfo = (OrderInfo) orderList.get(i);

    Iterator iterator = orderInfo.getProductList();

    while(iterator.hasNext()) {
    Product product = (Product) iterator.next();
    String productName = product.getProductName();

    if(!hash.contains(productName)) {
    hash.put(product.getProductName(), product.getPrice());
    }
    else {
    double price = Double.parseDouble((String) hash.get(productName));
    price += product.getPrice();
    hash.put(productName, price);
    }
    }
    }

    return hash;
    }