教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 java 对购物车的商品进行分组排序实例

java 对购物车的商品进行分组排序实例

发布时间:2016-11-27   编辑:jiaochengji.com
教程集为您提供java 对购物车的商品进行分组排序实例等资源,欢迎您收藏本站,我们将为您提供最新的java 对购物车的商品进行分组排序实例资源
一个java 对购物车的商品进行分组排序实例,项目中用到了就是对购物车中的数据进行分类排序了,希望此文章给你带来帮助。

最近有个需求,要求对购物车的商品进行排序。且同一活动的商品,要在一起显示。
最初想到的办法是首先对商品按活动进行分组,再进行组内排序。
发现这么做有点麻烦且性能比较低,经过leader提醒,可以先按活动排序,这样自然就按活动分组了。
而且jdk有自带的对集合排序的算法,废话不多说,直接上代码:

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy7947')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7947>/**
       * 1、根据活动排序
       * 2、根据商品类型(普通商品、赠品、组合销售从商品)排序
       * 3、按商品编号排序
       * 4、按加入购物车的时间排序
       * @param productColumnVolist
       * @return
       */
       private List<ProductColumnVo> productColumnSort(List<ProductColumnVo> productColumnVolist){
              Collections.sort(productColumnVolist, new Comparator<ProductColumnVo>() {
                     public int compare(ProductColumnVo o1, ProductColumnVo o2) {
                            if(StringUtils.isNotBlank(o1.getActiveID())
                                          && StringUtils.isBlank(o2.getActiveID())){
                                   //有活动的在前面显示
                                   return -1;
                            }else if(StringUtils.isBlank(o1.getActiveID())
                                          && StringUtils.isNotBlank(o2.getActiveID())){
                                   return 1;
                            }else if(StringUtils.isNotBlank(o1.getActiveID())
                                          && StringUtils.isNotBlank(o2.getActiveID())){
                                   //按活动排序
                                   int activeCompareResult = o1.getActiveID().compareTo(o2.getActiveID());
                                   if(activeCompareResult != 0){
                                          return activeCompareResult;
                                   }
                            }
                            //根据商品类型(普通商品、赠品、组合销售从商品)
                            int productTypeCompareResult = o1.getProductType() - o2.getProductType();
                            if(productTypeCompareResult == 0){
                                   //按商品编号排序
                                   int commodityTypeCompareResult = o1.getCommodityNo().compareTo(o2.getCommodityNo());
                                   if(commodityTypeCompareResult == 0){
                                          //按加入购物车的时间排序
                                          return (o1.getAddDate().before(o2.getAddDate()) ? -1:1);
                                   }else{
                                          return commodityTypeCompareResult;
                                   }
                            }else{
                                   return productTypeCompareResult;
                            }
                     }
              });
              return productColumnVolist;
       }

够简单吧。
其中组合销售的主商品的productType是0,从商品的productType是3。赠品活动主商品的productType是0,赠品时1。

注意:compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。如果大于0,则调整顺序,否则按原来顺序。

顺便研究了下Collections.sort的实现,这是一个稳定的排序。如果集合的长度小于7,就按直接插入进行排序,其余则按归并排序。

您可能感兴趣的文章:
php网上商城购物车代码一例
php 购物车的实现代码一例(session方式)
php中cookie mysql实现的购物车代码
php 购物车功能实现代码(入门例子)
java 对购物车的商品进行分组排序实例
php购物车的实现原理
php 购物车类的实现代码(单例模式)
django订单模块怎么实现
MV* 框架 与 DOM操作为主 JS库 的案例对比
php 购物车类实现代码一例

[关闭]
~ ~