对某种数据中的一个条件进行排序

//传入一个集合一

public List<TransferList> sortList(List<TransferList> list1) {
        if(list1==null) {
             list1 = userDao.getTransferList();     //判断集合是否为空,为空在数据中查询出来进行赋值 
        }
        List<TransferList> helperGetTransferList2 = new ArrayList<>();         //new一个集合二
        helperGetTransferList2.addAll(list1);      //使用方法将集合一添加到集合二中
        Collections.sort(helperGetTransferList2, new Comparator<TransferList>() {    //将集合二进行重写sort方法
            public int compare(TransferList p1, TransferList p2) {         //将集合进行从大到小排序   反之改变一下下面的判断
                if (p1.getOrderCount() == p2.getOrderCount()) {
                        return 0;
                } else if (p1.getOrderCount()> p2.getOrderCount()) {
                    return -1;
                } else {
                    return 1;
                }
            }
        });

//将排好序的集合存进linkesHashmap中进行去重         拿需要进行比较的分值当做KEY    默认将value变为0
        Map<String, String> lmap = new LinkedHashMap<>();
        for (TransferList tran : helperGetTransferList2) {
            String key =tran.getOrderCount().toString();
            lmap.put(key, "0");
        }
        int m=0;                                               
        for (String key : lmap.keySet()) {                   //循环所有的key   此时key中不存在重复数据 并且是按照从大到小排序    将m变量存进去
            lmap.put(key, (++m)+"");
        }
        for (TransferList tran : list1)  {                           //循环传入的集合    将map中的key于集合中的进行比较    一样就将名次进行赋值
             for (String key : lmap.keySet()) {
                if(tran.getOrderCount().toString().equals(key)) {
                    tran.setRanking(Integer.parseInt(lmap.get(key)));
                }
            }
        }
        return list1;
    }

猜你喜欢

转载自blog.csdn.net/weixin_42546892/article/details/87910886