一、代码如下
public static void main(String[] args) {
List<DepartmentVO> departmentVOList = new ArrayList<>();
DepartmentVO vo = new DepartmentVO();
vo.setId(1L);
vo.setStatus(1);
DepartmentVO vo2 = new DepartmentVO();
vo2.setId(2L);
vo2.setStatus(2);
DepartmentVO vo3 = new DepartmentVO();
vo3.setId(2L);
vo3.setStatus(3);
DepartmentVO vo4 = new DepartmentVO();
vo4.setId(1L);
vo4.setStatus(3);
departmentVOList.add(vo4);
departmentVOList.add(vo3);
departmentVOList.add(vo);
departmentVOList.add(vo2);
System.out.println("原来顺序=================================");
departmentVOList.forEach(departmentVO -> {
System.out.println(JSONUtil.toJsonStr(departmentVO));
});
System.out.println("按属性一降序,在按属性二升序=================================");
//按属性一降序,在按属性二升序
List<DepartmentVO> list1 = departmentVOList.stream().sorted(Comparator.comparing(DepartmentVO::getId).reversed().thenComparing(DepartmentVO::getStatus)).collect(Collectors.toList());
list1.forEach(departmentVO -> {
System.out.println(JSONUtil.toJsonStr(departmentVO));
});
System.out.println("按属性一降序,在按属性二降序=================================");
//按属性一降序,在按属性二降序
List<DepartmentVO> list2 = departmentVOList.stream().sorted(Comparator.comparing(DepartmentVO::getId).reversed().thenComparing(DepartmentVO::getStatus, Comparator.reverseOrder())).collect(Collectors.toList());
list2.forEach(departmentVO -> {
System.out.println(JSONUtil.toJsonStr(departmentVO));
});
}
@Data
public class DepartmentVO {
@ApiModelProperty("")
private Long id;
private Integer status;
}
二、运行结果
三、总结
List还有如下排序:
1、倒序
list.stream().sorted(Comparator.reverseOrder()).mapToInt(Integer::intValue).toArray();
2、按属性一升序
list.stream().sorted(Comparator.comparing(类::属性一));
3、按属性一降序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));
4、按属性一,属性二升序
list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二));
5、按属性一降序,在按属性二升序
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));
6、按属性一降序,在按属性二升序
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));
7、按属性一降序,在按属性二降序
list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));
你学会了吗?
(完)