美文网首页
java 对List中的对象进行排序

java 对List中的对象进行排序

作者: Tyson_Wu | 来源:发表于2019-06-04 10:47 被阅读0次

需求:

对如下List中的数据进行排序,先按照finishLessonCount进行排序,如果finishLessonCount相同,则按照姓名进行排序

如下是List中的对象实体

@Data
public class TeacherLessonStatistics {
    private int teacherId;
    private String name;
    private int finishLessonCount;
    private int totalScore;
    private int ranking;
    private boolean isClassAdmin;
}

单纯性的对数字,或者英文进行排序比较方便,Collections的sort方法可以进行排序

   private List<TeacherLessonStatistics> sortListData(List<TeacherLessonStatistics> statisticsList) {
        Collections.sort(statisticsList, (o1, o2) -> {
            if (o2.getFinishLessonCount() > o1.getFinishLessonCount()) {
                return 1;
            }
            if (o2.getFinishLessonCount() == o1.getFinishLessonCount()) {
                return o2.getName().compareTo(o1.getName()); //适用于英文,英文排序默认根据英文ASCII码进行排序
            }
            return -1;
        });
        return statisticsList;
    }

如果要对中文字符进行排序,需要使用Collator类,先指定Collator的地点

Collator cmp = Collator.getInstance(Locale.CHINA);

再利用Collator的compare进行比较

    /**
     * 对list里面的数据进行排序,先根据完成课时数量排,课时数量相同时,根据姓拼音排序
     *
     * @param statisticsList
     * @return
     */
    private List<TeacherLessonStatistics> sortListData(List<TeacherLessonStatistics> statisticsList) {

        Collections.sort(statisticsList, new Comparator<TeacherLessonStatistics>() {
            Collator cmp = Collator.getInstance(Locale.CHINA);
            @Override
            public int compare(TeacherLessonStatistics o1, TeacherLessonStatistics o2) {
                if (o2.getFinishLessonCount() > o1.getFinishLessonCount()) return 1;
                if (o2.getFinishLessonCount() == o1.getFinishLessonCount()){
                    CollationKey c1 = cmp.getCollationKey(o1.getName());
                    CollationKey c2 = cmp.getCollationKey(o2.getName());
                    return cmp.compare(c1.getSourceString(), c2.getSourceString());
                }
                return -1;
            }
        });
        return statisticsList;
    }

相关文章

  • Java字典序排序

    Java中对List进行字典序排序

  • java 对List中的对象进行排序

    需求: 对如下List中的数据进行排序,先按照finishLessonCount进行排序,如果finishLess...

  • 策略模式

    Java中对List中对象列表某个字段升序排序

  • java 对象数组排序

    java对象List集合的排序(基本类型相似); 方法一:使用for循环的方式来进行对象List集合的排序;方法二...

  • Java 8 中的Comparator 的用法

    Java 8 中的Comparator可以让我们很方便的实现排序的功能用法:对整数的列表升序排序 排序List对象...

  • Java List的排序

    1、List的排序方式 1)list中对象实现Comparable接口,重写compareTo接口,排序的字段进行...

  • Python中list元组如何按照第二维元素排序

    在Python中可以使用sorted函数对list进行排序,但是如果排序的对象是一个包含tuple的list时,s...

  • Java 排序

    概述 ​对Java对数组对象进行排序,Java对排序问题的处理。Java排序一般包括基础排序和Lambda Com...

  • Collections类常用方法总结

    Android中对list的日期元素进行排序Android list按照时间排序的问题 一. sort对集合进行排...

  • Java8 - 对集合排序

    对List进行排序 当我们需要对集合的元素进行排序的时候,可以使用java.util.Comparator 创建一...

网友评论

      本文标题:java 对List中的对象进行排序

      本文链接:https://www.haomeiwen.com/subject/eshlxctx.html