1.实现Comparator进行排序
创建需要排序对象
/**
* @author wangli
* @create 2022-08-17 17:17
*/
@Data
public class TotalNumDto {
@ApiModelProperty("工单总量")
private Integer workNum;
@ApiModelProperty("同比数")
private Integer yoyNum;
@ApiModelProperty("环比数")
private Integer qoqNum;
}
实现Comparator的compare方式实现排序
@Test
public void test2(){
List<TotalNumDto> totalNumDtoList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
TotalNumDto totalNumDto = new TotalNumDto();
totalNumDto.setWorkNum(i*2+1);
totalNumDtoList.add(totalNumDto);
}
System.out.println("排序前 = " + totalNumDtoList);
Collections.sort(totalNumDtoList, new Comparator<TotalNumDto>() {
@Override
public int compare(TotalNumDto o1, TotalNumDto o2) {
//顺序
//return o1.getWorkNum()-o2.getWorkNum();
//逆序
return o2.getWorkNum()-o1.getWorkNum();
}
});
System.out.println("排序后 = " + totalNumDtoList);
}
打印结果如下
排序前 = [
TotalNumDto(workNum=1, yoyNum=null, qoqNum=null),
TotalNumDto(workNum=3, yoyNum=null, qoqNum=null),
TotalNumDto(workNum=5, yoyNum=null, qoqNum=null)]
排序后 = [TotalNumDto(workNum=5, yoyNum=null, qoqNum=null),
TotalNumDto(workNum=3, yoyNum=null, qoqNum=null),
TotalNumDto(workNum=1, yoyNum=null, qoqNum=null)]
比较它的两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个
当compare方法返回1时需要交换这两个数的位置,通过算法循环从而达到不断交换位置实现排序