java中list存放对象后根据自定义排序策略排序

1、list中放入对象,根据对象的value自定义排序规则。


```java
package com.wucw.springboot_1.test;

import java.util.Objects;

public class Student{

    public Student(String name,String dec){
        this.dec = dec;
        this.name = name;
    }
    private String name ;
    private String dec;


    public String getName() {
        return name;
    }

    public String getDec() {
        return dec;
    }

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

    public void setDec(String dec) {
        this.dec=dec;
    }

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

    @Override
    public boolean equals(Object o) {
        if(this == o) {return true;}
        if(o == null || getClass() != o.getClass()){ return false;}
        Student student=(Student) o;
        return Objects.equals(name,student.name) &&
                Objects.equals(dec,student.dec);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name,dec);
    }
}
package com.wucw.springboot_1.test;

import java.util.*;

public class Sort {

    public static void main(String[] args) {
        //排序:ti>pc>ul>kl>yl
        List<Student> students = testList();
        //排序策略
        List<String> list = Arrays.asList("ti","pc","ul","kl","yl");
        //重写比较器排序
        /*Collections.sort(students,new Comparator<Student>() {
            @Override
            public int compare(Student o1,Student o2) {
                //获取描述中的值在list中位置
                int io1 = list.indexOf(o1.getDec());
                int io2 = list.indexOf(o2.getDec());
                //返回整数,根据位置大小,正序或者倒序。
                return io1-io2;
            }
        });*/
        //lambda表达式
        Collections.sort(students,(o1,o2) -> {
            //获取描述中的值在list中位置
            int io1 = list.indexOf(o1.getDec());
            int io2 = list.indexOf(o2.getDec());
            //返回整数,根据位置大小,正序或者倒序。
            return io1-io2;
        });
 
        System.out.println("已排序数据");
        for (Student student : students) {
            System.out.println(student);
        }
    }

    public static List<Student> testList(){
        //通过随机数,生成student对象列表
        List<Student> students = new ArrayList<>();
        int i = 1;
        Random random = new Random();
        for (int j = 0; j < 1; j++) {
            i = random.nextInt(10);
        }
        if(i<3){
            //排序:ti>pc>ul>kl>yl
            students.add(new Student("zhangsan","kl"));
            students.add(new Student("zhangsan","yl"));
            students.add(new Student("zhangsan","ul"));
            students.add(new Student("zhangsan","ti"));
            students.add(new Student("zhangsan","pc"));
            students.add(new Student("lisi","kl"));
            students.add(new Student("lisi","yl"));
            students.add(new Student("lisi","ti"));
            students.add(new Student("lisi","pc"));
        }else if(i>3 && i<6){
            students.add(new Student("wangwu","kl"));
            students.add(new Student("wangwu","ul"));
            students.add(new Student("wangwu","ti"));
            students.add(new Student("wangwu","pc"));
            students.add(new Student("zhaoliu","kl"));
            students.add(new Student("zhaoliu","yl"));
            students.add(new Student("zhaoliu","ul"));
            students.add(new Student("zhaoliu","ti"));
        }else{
            students.add(new Student("wangwu2","yl"));
            students.add(new Student("wangwu2","ul"));
            students.add(new Student("wangwu2","ti"));
            students.add(new Student("wangwu2","pc"));
            students.add(new Student("zhaoliu2","kl"));
            students.add(new Student("zhaoliu2","ul"));
            students.add(new Student("zhaoliu2","ti"));
            students.add(new Student("zhaoliu2","pc"));
        }
       System.out.println("未排序数据");
        for (Student student : students) {
            System.out.println(student);
        }
    }
}

运行结果 //排序:ti>pc>ul>kl>yl 符合自定义排序要求
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值