1:怎么用(开局就给代码,可直接使用,下面才是解析,不想看可直接拉取代码)
List<实体类名> list = apperalTypeMapper.selectList(实体类名);
Collections.sort(list, new Comparator<实体类名>() {
@Override
public int compare(实体类名 o1, 实体类名 o2) {
//排序规则:按照汉字拼音首字母排序
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
return com.compare(o1.getName(), o2.getName());
}
});
list为你查询出来的集合,无论是mapper还是mybatis-plue直接查询出来的都可以
然后复制下面的内容进下部,该怎么返回list还是怎么返回list,不用再调用这个方法。
注:这个01.getName 是你自己要进行排序的变量名(比如学生姓名),不是固定的变量名
List<实体类名> lists = apperalTypeMapper.selectList(实体类名);
Collections.sort(list, new Comparator<实体类名>() {
@Override
public int compare(实体类名 o1, 实体类名 o2) {
//排序规则:按照汉字拼音首字母排序
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
return com.compare(o1.getName(), o2.getName());
}
});
2:为什么用
(1)Comparator 可以看成是外部比较器,因为它先有list集合,然后再对list集合用比较器去排序;
(2)Collections.sort 比较器方法,会自动引出下方的compare方法,对compare方法进行重写,可以自定义排序的使用
如果你点进去内部会发现,Collections.sort方法底层就是调用的Arrays.sort方法,而Arrays.sort使用了两种排序方法,快速排序和优化的归并排序(还是相当于封装了,可以更好的使用)
因为它能更好的进行排序,不用写更多代码,也能自由的进行排序
3:用法
(1)Collections.sort(java对象集合,new Comperator<>())
这种方式需要填入两个参数
1、list集合中元素的数据类型是一个java对象;
2、重写compare方法;
(2)Collections.sort(list);
1.它是基本类型: 默认是按照升序排序的
原因:list中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序
2.如果要降序,还是需要重写compare方法,返回值为int类型,大于0表示正序,小于0表示逆序
好用又健康,兄弟们
@Override
public int compare(Integer o1, Integer o2) {
// 返回值为int类型,大于0表示正序,小于0表示逆序
return o2 - o1;
}
加班去喽