集合如何排序

集合排序

最近在写代码的时候,突然要对集合进行排序,但是一时之间却想不起来了。于是又回去翻看了基础然后整理了一下

  1. 可以自己写一个排序方法去排序,当然我感觉这么写的人很少啊(我是不会这么写的 哈哈)
  2. 可以使用Collections工具类中的sort方法,但是这个方法如果我们ArrayList集合中存的是自己创建的对象的话,我们要实现一个Comparable接口,然后覆写其中的compareTo方法

先来看看最简单的集合中存Integer

public class ArrayListTest { 
   public static void main(String[] args) { 
       List<Integer> list = new ArrayList<Integer>();
       list.add(6);
       list.add(8);
       list.add(4);
       list.add(3);
       list.add(10);
       list.add(5);
       System.out.println("----排序之前----");
       System.out.println(list);
       Collections.sort(list);
       System.out.println("----排序之后----");
       System.out.println(list);
   }
}

结果如下
《集合如何排序》

然后再来看看集合中存对象的
先来看看Worker对象

class Worker implements Comparable<Worker> { 

        private String name;
        private int age;
        private int salary;

        public Worker(String name, int age, int salary) { 
            this.name = name;
            this.age = age;
            this.salary = salary;
        }

        @Override
        public String toString() { 
            return "Worker{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", salary=" + salary +
                    '}';
        }

     //getter方法
     //setter方法
 
 /** 1. 先按照年龄,年龄一样,在按照薪资排序 **/    
        @Override
        public int compareTo(Worker o) { 
            if(o.getAge() > this.age){ 
                return 1;
            }else if(o.getAge() < this.age){ 
                return -1;
            }else{ 
                if (o.getSalary() > this.salary){ 
                    return 1;
                }else if(o.getSalary() < this.salary){ 
                    return -1;
                }else { 
                    return 0;
                }
            }
        }
    }

再来看测试代码

public class ArrayListTest { 
    public static void main(String[] args) { 
        List<Worker> list = new ArrayList<>();
        list.add(new Worker("张三",23,5000));
        list.add(new Worker("张四",24,6000));
        list.add(new Worker("张五",25,3000));
        list.add(new Worker("张八",25,6000));
        list.add(new Worker("张六",21,4000));
        list.add(new Worker("张七",21,8000));
        System.out.println("----排序之前----");
        list.forEach(System.out::println);
        Collections.sort(list);
        System.out.println("----排序之后----");
        list.forEach(System.out::println);
    }
}

结果如下
《集合如何排序》
3. 还可以利用stream().sorted()来进行排序

list = list.stream().sorted().collect(Collectors.toList());

如有不足的地方还望补充

    原文作者:Skynon
    原文地址: https://blog.csdn.net/weixin_43198784/article/details/114929672
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞