java list rank_Java排行榜中多级排序的一种正确实现方式

需求:1,外层根据参与人数排序,并据此分页

2,内层首先根据级别排序,级别相同时,按照票数排序,固定展示8条

实现基础:ArrayList

可能的坑:仅仅对最外层list执行一次排序调用,此时,无法确保总是正确,有时正确

正确姿势:首先对每个内层list执行排序,然后加入外层list,最后对外层list执行一次排序

代码实战:

1.内层model

import lombok.Data;

/**

* @Author: feeler

* @Date: 2018/07/12 21:17

* @Description:

*/

@Data

public class PlayerKillingVideoUserInfo implements Comparable{

private String userid;

private int source;

private String userName;

private String headImageUrl;

private String pkDate;

private String videoId;

private long voteCount;

private int currentLevel;

/** high to low with currentLevel or voteCount*/

@Override

public int compareTo(PlayerKillingVideoUserInfo o) {

if(this.currentLevel > o.currentLevel) {

return -1;

} else if(this.currentLevel < o.currentLevel) {

return 1;

} else {

if(this.voteCount > o.voteCount) {

return -1;

} else if(this.voteCount < o.voteCount) {

return 1;

} else {

return 0;

}

}

}

}

2.外层model

import com.services.mapper.database.model.PlayerKillingVideoUserInfo;

import lombok.Data;

import java.util.List;

/**

* @Author: feeler

* @Date: 2018/07/13 15:37

* @Description:

*/

@Data

public class ThemeRankInfo implements Comparable{

private long invovledCount;

private long pageCount;

private ListplayerKillingVideoUserInfoList;

@Override /** 由高到低 */

public int compareTo(ThemeRankInfo o) {

if(this.invovledCount > o.invovledCount) {

return -1;

} else if(this.invovledCount < o.invovledCount) {

return 1;

} else {

return 0;

}

}

}

3. 排序方式

for(PlayerKillingThemeDto playerKillingThemeDto: playerKillingThemeDtoList) {

ThemeRankInfo themeRankInfo = new ThemeRankInfo();

themeRankInfo.setPageCount(pageCount);

for (PlayerKillingVideoUserDto playerKillingVideoUserDto : playerKillingVideoUserDtoList) {

PlayerKillingVideoUserInfo playerKillingVideoUserInfo = new PlayerKillingVideoUserInfo();

......

playerKillingVideoUserInfo.setCurrentLevel(playerKillingVideoUserDto.getCurrentLevel());

playerKillingVideoUserInfoList.add(playerKillingVideoUserInfo);

}

/**step 1 sort*/

Collections.sort(playerKillingVideoUserInfoList);

themeRankInfo.setPlayerKillingVideoUserInfoList(playerKillingVideoUserInfoList);

themeRankInfoList.add(themeRankInfo);

}

/**step 2 sort*/

Collections.sort(themeRankInfoList);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值