呱呱侠 2015-10-31 06:14 采纳率: 10%
浏览 1508
已结题

广告列表积分大小排序

举例: 我想在一个列表里添加两个积分墙广告列表A和B, 现在需要对A和B里面的列表广告进行排序,积分高的就排在前面,积分低的就排在后面,我现在的思路是将A和B添加到一个大列表C里,然后对C整个排序,但是具体不知道怎么写了,因为我是根据积分列表里面对象的积分值字段进行比较大小的,有点搞不懂,不会写了,下面是我们的代码案例,求大神帮忙看看 List alist = new ArrayList();
List blist = new ArrayList();
List clist = new ArrayList();

                      clist  .addAll(alist);
                      clist .addAll(blist );

    现在对clist 进行排序:
             for (int i = 0; i < clist .size(); i++) {
                    for (int j = i + 1; j < clist .size(); j++) {
                            BaseResource br_1 = clist .get(i);
                            //getPoint是获取结合对象列表的积分大小的  gerPoint(),说明在下面~
                            int data1 = getPoint(br_1);
                            BaseResource br_2 = clist .get(j);
                            int data2 = getPoint(br_2);
                            //对积分point大小进行比较
                            if (data1 < data2) {


                             ------------  这里写不下去了-----------


                            }
                    }
            }

    private int getPoint(BaseResource br) {
            if (br.dataType == A_DataType) {
                    ConnerObject connerObject= (ConnerObject) br.object;
                    //返回A广告的分值大小
                    return aconnerObject.getPoints();
            } else if (br.dataType == B_DataType) {
                     Map<String, Object> map = (Map<String, Object>) br.object;
                      //返回B广告的分值大小
                    return (Integer) map.get("number");
            }
            return 0;
    }
  • 写回答

2条回答 默认 最新

  • 诸相非相 2015-10-31 11:06
    关注

    一、list排序,JDK官方类库有支持,既Collections.sort(List list)这个接口
    这可以有两种做法
    1、列表元素类implemensts Comparable接口,然后调用Collections.sort(List list),list即为有序
    2、如果列表元素所属类不方便实现implemensts Comparable接口,那么可以重载Collections.sort,自定义比较方法,如下:

     Collections.sort(listA, new Comparator<Object>() {
                public int compare(Object arg0, Object arg1) {
                    //1)如果arg0和arg1的内部某个指定属性比较,arg0大于arg0,则返回1
                    //2)如果等于,返回0
                    //3)arg0小于arg0,返回-1
                    //4)假如要逆序排序,则1)和3)的返回值互换。
                    .....
                }
            });
    

    二、用自己的方式,不用JDK类库的话。
    1、那么最好先写一个compare方法,就与上面重载Collections.sort的那么compare方法一样;
    2、列表元素a1和a2的大小比较,转为compare(a1,a2)返回值的比较;
    3、可以用并归、快排、冒泡等等经典排序算法,自由使用。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题