• java--对象比较器


    •       在实际的项目中,经常会遇到排序问题,对于基本数据类型java支持Arrays.sort()和Collection.sort()对集合进行排序,但是对用户自定义类型排序呢?java给我们提供了两种解决方案。

    一:通过实现Comparable<Object> 在内部实现

    示例代码:

    package com.lky.model;
    
    import java.io.Serializable;
    
    @SuppressWarnings("serial")
    public class Student implements Serializable, Comparable<Student> {
    
        private String name;
        private Integer id;
        private String log;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getLog() {
            return log;
        }
    
        public void setLog(String log) {
            this.log = log;
        }
    
        @Override
        public String toString() {
            return "Student [name=" + name + ", id=" + id + ", log=" + log + "]";
        }
    
        @Override
        public int compareTo(Student o) {
            return o.getId()-id;
        }
    
    }

    二.通过实现 Comparator<Object> 来定义排序规则

    示例代码:

    package com.lky.test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Random;
    
    import org.junit.Test;
    
    import com.lky.model.Student;
    
    public class compartorTest {
    
        public class OutComparator implements Comparator<Student> {
    
            @Override
            public int compare(Student o1, Student o2) {
                int result = 0;
                result = o1.getId() - o2.getId();
    
                if (result == 0) {
                    return o1.getName().compareTo(o2.getName());
                } else {
                    return result;
                }
            }
        }
    
        @Test
        public void test() {
            List<Student> array = new ArrayList<Student>();
            for (int i = 0; i < 20; ++i) {
                Student student = new Student();
                student.setId(new Random().nextInt(10) + 1);
                student.setLog("log" + i);
                student.setName("lky" + i);
                array.add(student);
            }
            Collections.sort(array);// 采用默认排序
            // Collections.sort(array, new OutComparator());//采用自定义排序
            for (Student student : array) {
                System.out.println(student);
            }
        }
    
    }
  • 相关阅读:
    微服务
    flume
    mongodb
    Java 代理学习笔记
    HttpClient连接池
    一起写RPC
    spring boot cloud
    .NET MVC 表主外键关系 JSON 无限循环 方案二(推荐)
    EF提示“序列化类型为XXX的对象时检测到循环引用”
    Handlebars.js registerHelper
  • 原文地址:https://www.cnblogs.com/dmir/p/4915759.html
Copyright © 2020-2023  润新知