6.Java中ArrayList进行排序总结

createh51周前 (03-05)技术教程4

文章目录

  • 前言
    • 1.基础类型的集合排序:
    • 2.实体类的集合排序传统:
    • 3.Java8使用流式的排序:
  • 结尾

前言

ArrayList是最常见最频繁我们java编程当中使用的集合类,往往进行集合操作的时候会进行排序操作,本文进行一些总结来方便大家进行操作集合类的时候能够更轻松的排序集合实现业务。

1.基础类型的集合排序:

 @Test
    public  void sortTest(){
        Listlist=new ArrayList<>();
        Listlist2=new ArrayList<>();
        list.add(10);
        list.add(1);
        list.add(9);
        list.add(2);
        Collections.sort(list);
        System.out.println(list);
        Collections.reverse(list);
        System.out.println(list);
        list2.add("2021-06-10 13:56:48");
        list2.add("2021-06-11 13:56:48");
        Collections.sort(list2);
        System.out.println(list2);
        Collections.reverse(list2);
        System.out.println(list2);
    }

此为基础类的排序,正序排序和倒序排序等,使用起来其实是非常方便的。

2.实体类的集合排序传统:

 @Test
    public  void stuSortTest(){

        List stus = new ArrayList<>();
        Stu stu1 = new Stu();
        Stu stu2 = new Stu();
        Stu stu3 = new Stu();
        stu1.setName("张三");
        stu1.setAge(30);

        stu2.setName("李四");
        stu2.setAge(20);

        stu3.setName("王五");
        stu3.setAge(60);

        stus.add(stu1);
        stus.add(stu2);
        stus.add(stu3);
        //对users按年龄进行排序
        Collections.sort(stus, new Comparator() {

            @Override
            public int compare(Stu o1, Stu o2) {
                // 升序
                //return o1.getAge()-o2.getAge();
                //return o1.getAge()-o2.getAge();
                // 降序
                 return o2.getAge()-o1.getAge();
                // return o2.getAge().compareTo(o1.getAge());
            }
        });
        // 输出结果
        System.out.println(stus);

    }

此为常用的比较传统的传递比较器的比较实体类的方法使用。当然如果是多条件的话直接在比较器中compare进行计算排序则可以,基本的比较规则为大于的在前面,小于的在后面。

3.Java8使用流式的排序:

 @Test
    public  void stuSortTest2(){
        List stus = new ArrayList<>();
        Stu stu1 = new Stu();
        Stu stu2 = new Stu();
        Stu stu3 = new Stu();
        stu1.setName("张三");
        stu1.setAge(30);

        stu2.setName("李四");
        stu2.setAge(20);

        stu3.setName("王五");
        stu3.setAge(60);

        stus.add(stu1);
        stus.add(stu2);
        stus.add(stu3);
        //正序排序
        List stuSortAsc= stus.stream().sorted(Comparator.comparing(o->o.getAge())).collect(Collectors.toList());
         //倒序排序
        List stuSortDesc= stus.stream().sorted(Comparator.comparing(Stu::getAge).reversed()).collect(Collectors.toList());
        System.out.println("正序:"+stuSortAsc);
        System.out.println("倒序:"+stuSortDesc);


    }

上面就是java8中流式的集合类通过传递比较字段进行排序达到排序目的。

结尾

上面就是总结的见过的比较常用的集合的排序的方法,其中个人比较推崇的还是java8中流式的排序,已经能够满足大部分的业务场景需求,代码看着比较简洁清楚,如果你也有想法沟通的话欢迎进行留言,或者关注我的公众号:Java时间屋进行交流。

相关文章

Java 实现快速排序、归并排序、选择排序和桶排序

import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util....

Java中List排序的3种方法

在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进...

Java选择排序法

假设当前存在一个 int 类型的数组 number,该数组中的元素依次是 13、15、 24、99、4 和 1。如果使用冒泡排序进行两两相邻比较,第 一趟排序后的结果如下:  13、15、24、4、1...

java快速排序

快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。public st...

算法篇:Java实现九种排序算法1:插入排序之后直接插入排序

一、插入排序思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。关键问题:在前面已经排好序的序列中找到合适的插入位置。方法:直接插入排序、二分插入...

java实现10种排序算法

1.冒泡排序(Bubble Sort)import java.util.Arrays;//冒泡排序public class BubbleSort_01 {public static void main...