集合如何排序

集合排序

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

  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());

如有不足的地方还望补充

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值