Java 8 对 List的排序

1.按照字母顺序排序字符串

 /**
 * String sort(不区分大小写)
 */
private static void sortStringInsentive() {
    List<String> originalList = Arrays.asList("Apache", "apache", "aapache", "bpache", "Bpache", "bapache");
    originalList.sort(String.CASE_INSENSITIVE_ORDER);
    System.out.println(originalList);

}

/**
 *String sort(区分大小写)
 */
private static void sortStringSentive() {
    List<String> originalList = Arrays.asList("Apache", "apache", "aapache", "bpache", "Bpache", "bapache");
    originalList.sort(Comparator.naturalOrder());
    System.out.println(originalList);

}
2.对数字进行排序

/**
 *Integer sort()
 */
private static void sortInteger() {
    List<Integer> originalList = Arrays.asList(12, 3, 6, 7);
    originalList.sort(Comparator.naturalOrder());
    System.out.println(originalList);
}

3.按照对象中中的某个字段进行排序

/**
 * bean 中的某个字段 (String)
 */
private static void sortBeanString() {
    List<Student> originalList = Arrays.asList(new Student("张三", 24, 23.01, false), new Student("李四", 23, 23.02, true),
            new Student("alice", 25, 25.02, false), new Student("Jack", 29, 24, true), new Student("Jack", 28, 24, false),
            new Student("mark", 30, 24, false));
    originalList.sort(Comparator.comparing(Student::getName).reversed());
    System.out.println(originalList);
}

/**
 * bean 中的某个字段 (Double)
 */
private static void sortBeanDouble() {
    List<Student> originalList = Arrays.asList(new Student("张三", 24, 23.01, false), new Student("李四", 23, 23.02, true),
            new Student("alice", 25, 25.02, false), new Student("Jack", 29, 24, true), new Student("Jack", 28, 24, false),
            new Student("mark", 30, 24, false));
    originalList.sort(Comparator.comparingDouble(Student::getSalary));
    System.out.println(originalList);
}

4.按照对象中中的多个字段进行排序

private static void sortBeanMutil() {
    List<Student> originalList = Arrays.asList(new Student("张三", 24, 23.01, false), new Student("李四", 23, 23.02, true),
            new Student("alice", 25, 25.02, false), new Student("Jack", 29, 24, true), new Student("Jack", 28, 24, false),
            new Student("mark", 30, 24, false));
    originalList.sort(Comparator.comparingDouble(Student::getSalary).reversed().thenComparing(Comparator.comparingInt(Student::getAge)));
    System.out.println(originalList);
}

5.自定义比较器

private static void sortOther() {
    List<Student> originalList = Arrays.asList(new Student("张三", 24, 23.01, false), new Student("李四", 23, 23.02, true),
            new Student("alice", 25, 25.02, false), new Student("Jack", 29, 24, true), new Student("Jack", 28, 24, false),
            new Student("mark", 30, 24, false));
    // method 1
    originalList.sort(new Comparator<Student>() {
        @Override
        public int compare(Student o1, Student o2) {
            if (o1.leader == o2.leader) {
                return 0;
            }
            return o1.leader ? -1 : 1;
        }
    });
    System.out.println(originalList);
    System.out.println("************************************");
    // method 2
    originalList.sort((s1, s2) -> {

        return s1.isLeader() ? -1 : 1;
    });
    System.out.println("self 2 :" + originalList);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,285评论 0 3
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 771评论 0 2
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,888评论 0 15
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 新学期寄语 告别了愉快的暑假,我们又欢聚在了梦想起航的地方——平川镇中心小学。新的学年,同学们升入了新的年级,进入...
    用心走世界阅读 574评论 0 2