list对象集合按照对象的某个值排序
对象需要继承 Comparable
@Data
public class TeamPerformance implements Comparable<TeamPerformance>,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<TeamPerformance> 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);
}
}