Map集合本身无序,所以即使你按顺序加入元素都不能
保证Iterator 出来的还是原来顺序,更不用说对其进行排序了。

解决方案 »

  1.   

    那么如何实现按照商品浏览购物车内容,而在写入数据库时对应每个送货地点(shopid)生成不同的单据,有什么更好的办法吗?
    现在购物车的信息是放在session里的呀
      

  2.   

    代码是死的 人是活的!应该先考虑我存什么东西 后面生成单的时候需要什么数据 这样一步一步反复推敲一下 再灵活运用你所熟悉的java数据结构来实现你的设想!如果跟数据库有关的话 还要充分利用数据库的优点和好处!
    相信到后面你就知道 该怎么做了!
      

  3.   

    到后面就来不及了!
    第2次做项目,第1次做设计,
    本周就要写出设计,
    请各位给我支个招吧至于“我存什么东西 后面生成单的时候需要什么数据”
    显示给用户并存入session的hashmap:
    商品1 数量1 送货地点1
    商品2 数量2 送货地点1
    商品3 数量3 送货地点2...
    而写入数据库的要求是,一次购买针对一个送货地点生成一张单据,一个单据里面包含若干商品,
    即 送货地点1生成1张单据,包含商品1和商品2
       送货地点2生成1张单据,包含商品3...我实在是想不出什么太好的办法了,你们有什么好办法就说出来吧!!!
      

  4.   

    这个容易的,我的方法可能有点苯,但是解决问题了。首先,[ 将iter对象按其属性之一shopid重新排序分组,该怎么做?(构造新的按shopid排序的对象组?)] 我认为可以用 TreeMap 来实现。TreeMap tMap; // 用来放结果,keys 会自动排序的。shop_id(1..n) -> vector { 商品1, 商品2 }// 省略了得到 商品ID-销售单对象 的过程 
    for (;;){
        type_shop_id t_shop_id = 销售单对象.shop_id;
        if ( tMap.containKeys(t_shop_id) ) {
            // shop_id 已经有了。
            Vector v=(Vector)tMap.get(t_shop_id);
            v.add(商品ID);
        }else {
            // shop_id 第一次出现。
            tMap.put(t_shop_id, (new Vector() v).add(商品ID) );
        }
    }以上仅仅是伪代码,TreeMap 可以好好利用,你可以参考一下java api.
      

  5.   

    这个容易的,我的方法可能有点苯,但是解决问题了。首先,[ 将iter对象按其属性之一shopid重新排序分组,该怎么做?(构造新的按shopid排序的对象组?)] 我认为可以用 TreeMap 来实现。TreeMap tMap; // 用来放结果,keys 会自动排序的。shop_id(1..n) -> vector { 商品1, 商品2 }// 省略了得到 商品ID-销售单对象 的过程 
    for (;;){
        type_shop_id t_shop_id = 销售单对象.shop_id;
        if ( tMap.containKeys(t_shop_id) ) {
            // shop_id 已经有了。
            Vector v=(Vector)tMap.get(t_shop_id);
            v.add(商品ID);
        }else {
            // shop_id 第一次出现。
            tMap.put(t_shop_id, (new Vector() v).add(商品ID) );
        }
    }以上仅仅是伪代码,TreeMap 可以好好利用,你可以参考一下java api.