Java ArrayList sort() 方法实现集合的升序降序

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * create by 86159 on 2021/1/11
 */
public class ArraySort {
    public static void main(String[] args) {
        // 生命一个集合
        List<Integer> list = new ArrayList<>();
        list.add(7);
        list.add(2);
        list.add(102);
        list.add(367);
        list.add(-28);

        //升序方式一
        list.sort(Comparator.naturalOrder());
        System.out.println(list);


        // 升序方式二
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1,o2);
            }
        });
        System.out.println(list);


        //倒序方式一
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o2,o1);
            }
        });
        System.out.println(list);

        //倒叙方式二:lamda表达式
        list.sort((x,y) -> Integer.compare(y,x));
        System.out.println(list);
    }


}

运行结果如下:

[-28, 2, 7, 102, 367]
[-28, 2, 7, 102, 367]
[367, 102, 7, 2, -28]
[367, 102, 7, 2, -28]

想想,如果一个对象数组,要根据对象中的某一个属性对数组进行排序,该怎么处理呢?

package org.sang.model.entity;

/**
 * @Author: chuxia0811
 * @Date: 2021/1/18 22:37
 * @Description :
 */
public class Student {
    private String sno; //学号
    private String name;//姓名
    private Integer age; //年龄

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

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

    public Student(String sno, String name, Integer age) {
        this.sno = sno;
        this.name = name;
        this.age = age;
    }
}

package org.sang.test;

import org.sang.model.entity.Student;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @Author: chuxia0811
 * @Date: 2021/1/18 22:39
 * @Description :
 */
public class ArraySort2 {
    public static void main(String[] args) {

        Student stu1 = new Student("001", "张三", 18);
        Student stu2 = new Student("002", "李四", 23);
        Student stu3 = new Student("003", "王五", 16);
        Student stu4 = new Student("004", "Jhon", 32);
        Student stu5 = new Student("005", "tom", 10);
        Student stu6 = new Student("006", "alice", 53);

        Student[] stus = new Student[6];
        stus[0] =  stu1;
        stus[1] =  stu2;
        stus[2] =  stu3;
        stus[3] =  stu4;
        stus[4] =  stu5;
        stus[5] =  stu6;
        System.out.println("---------排序前:");
        for (int i = 0;i<stus.length;i++){
            System.out.println(stus[i].toString());
        }
        //排序
        Arrays.sort(stus, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getAge().compareTo(o2.getAge());//根据age属性正序排序
            }
        });
        System.out.println("---------排序后:");
        for (int i = 0;i<stus.length;i++){
            System.out.println(stus[i].toString());
        }
    }



}

数组中是student 对象,现在要根据age属性对数组进行排序,运行结果如下:

---------排序前:
Student{sno='001', name='张三', age=18}
Student{sno='002', name='李四', age=23}
Student{sno='003', name='王五', age=16}
Student{sno='004', name='Jhon', age=32}
Student{sno='005', name='tom', age=10}
Student{sno='006', name='alice', age=53}
---------排序后:
Student{sno='005', name='tom', age=10}
Student{sno='003', name='王五', age=16}
Student{sno='001', name='张三', age=18}
Student{sno='002', name='李四', age=23}
Student{sno='004', name='Jhon', age=32}
Student{sno='006', name='alice', age=53}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初夏0811

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值