• java比较器Comparator的简单使用



    1
    import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 import java.util.List; 5 6 public class ComparatorTest implements Comparator<stuEntity> { 7 8 /** 9 * @param args 10 */ 11 public static void main(String[] args) { 12 List<stuEntity> list = new ArrayList<stuEntity>(); 13 stuEntity stud1=new stuEntity(); 14 stud1.setAge(10); 15 stud1.setName("abc"); 16 stuEntity stud2=new stuEntity(); 17 stud2.setAge(10); 18 stud2.setName("bdc"); 19 stuEntity stud3=new stuEntity(); 20 stud3.setAge(5); 21 stud3.setName("bdd"); 22 stuEntity stud4=new stuEntity(); 23 stud4.setAge(30); 24 stud4.setName("aad"); 25 26 list.add(stud1); 27 list.add(stud2); 28 list.add(stud3); 29 list.add(stud4); 30 31 Collections.sort(list, new ComparatorTest()); 32 33 for(stuEntity stud:list){ 34 System.out.println(stud.getAge()+":"+stud.getName()); 35 } 36 } 37 /** 38 * 39 */ 40 @Override 41 public int compare(stuEntity stud1, stuEntity stud2) { 42 //根据姓名排序 43 int maxname=stud1.getName().compareTo(stud2.getName()); 44 if(maxname!=0) 45 return maxname; 46 //根据年龄排序 47 int maxage=stud1.getAge()-stud2.getAge(); 48 //if(maxage!=0) 49 return maxage; 50 51 52 53 } 54 55 }

    输出:

    30:aad
    10:abc
    10:bdc
    5:bdd

    java的比较器很有用,实现Comparator接口的compare()这个回调方法来制定排序规则,然后调用Collections.sort(list, new ComparatorTest());就可以将List进行排序,很方便

    使用时要注意compare()方法中的return的先后顺序,优先的排序规则要写在前面

    实体类:

    /**
     * 学生实体类
     * 
     */
    public class stuEntity {
        private int studentId;// 学号
        private String name;
        private int age;
        private String sex;// 性别
        private int roomNumber;// 房间号
        private String degree;//学位
        private int grade;//年级
        private String deviceNumber;// 设备号
        private int groupNumber;// 所属的小组
        private int javaScore;// java成绩
        private int netScore;// NET成绩
        public String getDegree() {
            return degree;
        }
    
        public void setDegree(String degree) {
            this.degree = degree;
        }
    
        public int getGrade() {
            return grade;
        }
    
        public void setGrade(int grade) {
            this.grade = grade;
        }
    
    
    
        /**
         * 初始化有参构造函数
         * 
         * @param id
         * @param name
         * @param age
         * @param sex
         * @param roomNumber
         * @param deviceNumber
         * @param groupNumber
         * @param javaScore
         * @param netScore
         */
        public stuEntity(String name, int age, String sex, int roomNumber,
                String deviceNumber, int groupNumber, int javaScore, int netScore) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.roomNumber = roomNumber;
            this.deviceNumber = deviceNumber;
            this.groupNumber = groupNumber;
            this.javaScore = javaScore;
            this.netScore = netScore;
        }
    
        /**
         * 无参构造函数
         */
        public stuEntity() {
    
        }
    
        public int getJavaScore() {
            return javaScore;
        }
    
        public void setJavaScore(int javaScore) {
            this.javaScore = javaScore;
        }
    
        public int getNetScore() {
            return netScore;
        }
    
        public void setNetScore(int netScore) {
            this.netScore = netScore;
        }
    
        
    
        public int getStudentId() {
            return studentId;
        }
    
        public void setStudentId(int studentId) {
            this.studentId = studentId;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getRoomNumber() {
            return roomNumber;
        }
    
        public void setRoomNumber(int roomNumber) {
            this.roomNumber = roomNumber;
        }
    
        public String getDeviceNumber() {
            return deviceNumber;
        }
    
        public void setDeviceNumber(String deviceNumber) {
            this.deviceNumber = deviceNumber;
        }
    
        public int getGroupNumber() {
            return groupNumber;
        }
    
        public void setGroupNumber(int groupNumber) {
            this.groupNumber = groupNumber;
        }
    }
  • 相关阅读:
    导线截面积与导线直径及其载流量之间的关系
    quartus II 自动生成testbench
    几乎每个文件里面都有 #ifdef __cplusplus extern "C" { #endif 可我没找到程序里那个地方定义了__cplusplus 啊?这又是怎么回事呢?
    jni集成第3方third party动态库libwebrtc_audio_preprocessing.so时android.mk的编写
    升级svn 到1.7
    FFmpeg编码详细流程
    FFmpeg解码详细流程
    centos 在CentOS下编译FFmpeg
    centos编译 Compiling FFmpeg on CentOS RHEL Fedora
    C语言的面向对象设计之 X264,FFMPEG 架构探讨
  • 原文地址:https://www.cnblogs.com/afluy/p/3240225.html
Copyright © 2020-2023  润新知