JAVA集合,List排序

  • 测试类
import entity.Student;

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

/**
 * List 排序测试
 * @author : ZhouMei
 * @date Date : 2022年08月11日 15:03
 * @Description: TODO
 */
public class ListTest {
    public static void main(String[] args) {
        List<Student> list = new ArrayList();
        list.add(new Student(1, "张三", 23));
        list.add(new Student(2, "李四", 18));
        list.add(new Student(3, "王五", 22));
        list.add(new Student(4, "赵六", 21));

        Collections.sort(list);
        System.out.println("使用Student类默认比较器排序后的结果:" + list);

        Collections.sort(list, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                //按年龄倒序
                return s2.getAge() - s1.getAge();
            }
        });
        System.out.println("使用自定义比较器排序后的结果:" + list);
    }
}
  • Student 类
package entity;
import lombok.Data;

/**
 * @author : ZhouMei
 * @date Date : 2022年08月11日 10:20
 * @Description: TODO
 */
@Data
public class Student implements Comparable {
    private Integer id;
    private String name;
    private Integer age;

    public int compareTo(Object o1) {
        Student s1 = (Student) o1;

        if(this.age > s1.age){
            return 1;
        }

        if(this.age == s1.age){
            return this.name.compareTo(s1.name);
        }

        return -1;
    }

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

}
  • 测试结果
使用Student类默认比较器排序后的结果:[Student(id=2, name=李四, age=18), Student(id=4, name=赵六, age=21), Student(id=3, name=王五, age=22), Student(id=1, name=张三, age=23)]
使用自定义比较器排序后的结果:[Student(id=1, name=张三, age=23), Student(id=3, name=王五, age=22), Student(id=4, name=赵六, age=21), Student(id=2, name=李四, age=18)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值