list对象集合按照对象的某个值排序

list对象集合按照对象的某个值排序

对象需要继承 Comparable

@Data
public class TeamPerformance implements  Comparable,Serializable{
    private static final long serialVersionUID = -6728798297301322140L;
    /**
     * 战队id
     */
    private Integer tId;
    /**
     * 战队总业绩
     */
    private BigDecimal tMoney;


    /**
     * 战队总业绩
     */
    private int tGold;

    /**
     * 战队名字
     */
    private String tName;

    /**
     * 按照tMoney排序 如果tMoney一样 按照id排序
     * @param o
     * @return
     * -表示从大到小排序 去掉则表示从小到大排序
     */
    @Override
    public int compareTo(TeamPerformance o) {
        // 先比较销售业绩 按照销售业绩降序排列
        int i=-this.getTMoney().compareTo(o.getTMoney());
        // 如果销售业绩相同 按照金币 降序排列
        if(i==0){
            return  -this.getTGold()-o.getTGold();
        }
        // 如果金币和销售业绩相同 按照战队id 排列
        if(i==0&&(this.getTGold()-this.getTGold()==0)){
            return  -this.getTId() - o.getTId();
        }
        return i;
    }
}

排序

	 @Test
    public void testTeamPerformance(){
      List list=new ArrayList<>();
      list.add(new TeamPerformance(2,new BigDecimal(20),"王子"));
      list.add(new TeamPerformance(3,new BigDecimal(30),"王子王"));
      list.add(new TeamPerformance(4,new BigDecimal(40),"王子王子"));
      list.add(new TeamPerformance(1,new BigDecimal(10),"王"));
      list.add(new TeamPerformance(5,new BigDecimal(50),"王子王子王"));
        Collections.sort(list);
        for (TeamPerformance teamPerformance : list) {
                   System.out.println(teamPerformance);
                  }
    }

你可能感兴趣的:(list对象集合按照对象的某个值排序)