在java的list中,不改变list的顺序,给list加上名次排名

举例说明:

现在有一个list集合rclistday。

实体中有字段:

private int ranking;        //排名

private Double sal_amt;     //成交金额

下面是排序代码,修改list名称和你要根据什么字段排名的名称,就可直接使用(注,list的顺序需要是根据要排名的字段呈倒序)

		//定义个变量保存名次
		int r = 1;
		for (int j = 0; j < rclistday.size(); j++) {
			//判断一下,最后一行不能进
			if (j<rclistday.size()-1) {
				//判断当前的值和下一个值相等时进入
				if (rclistday.get(j).getSal_qty() == rclistday.get(j+1).getSal_qty()) {
					//压人名次
					rclistday.get(j).setRanking(r);
				//否则的话,如果当前值大于下一个值,说明下个值就是下一个名次,先给当前值压人当前名次,然后全局变量名次r加1
				}else if(rclistday.get(j).getSal_qty() > rclistday.get(j+1).getSal_qty()){
					rclistday.get(j).setRanking(r);
					r++;
				}
			//否则,当循环到最后一个值的时候,进入(并且要满足总行数大于1)
			}else if(j == rclistday.size()-1 && rclistday.size() > 1){
				//如果最后一个值等于到数第二个值得话,说明最后一个值和上一个名次相同,压人当前名次,否则的话,名次加1压人
				if(rclistday.get(j).getSal_qty() == rclistday.get(j-1).getSal_qty()){
					rclistday.get(j).setRanking(r);
				}else if(rclistday.get(j).getSal_qty() < rclistday.get(j-1).getSal_qty()){
                                        rclistday.get(j).setRanking(r);
                                }else{
					rclistday.get(j).setRanking(r+1);
				}
				
			}
                        //如果总行数只用一行,排名压人1
			if(rclistday.size() == 1){
				rclistday.get(j).setRanking(1);
			}
		}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值