zoukankan      html  css  js  c++  java
  • list集合排序2

    java根据List内对象的属性排序

    原创 2016年12月07日 00:20:01

    方法一:实现Comparator接口,并重写compare方法

    • 实体类代码:
    import java.util.Comparator;
    
    /**
     * 学生类   方法一
     * 实现Comparator接口
     * 并重写compare方法
     * @author liaot
     *
     */
    public class Student implements Comparator<Student>{
        private String name; //姓名
        private int age;  //年龄
    
        //重写 比较方法  本次例子定义为按年龄比较
        @Override
        public int compare(Student o1, Student o2) {
            if(o1.getAge() > o2.getAge()){
                return 1;
            }else{
                return -1;
            }
        }
    
    
        public Student(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
    
        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;
        }
    }
    • 测试类:
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Main {
    
        public static void main(String[] args) {
            //初始化四个不同的学生
            Student stu1 = new Student("路人甲", 20);
            Student stu2 = new Student("路人已", 18);
            Student stu3 = new Student("路人丙", 16);
            Student stu4 = new Student("路人丁", 19);
            //新建List把学生加进List
            List<Student> stuList = new ArrayList<>();
            stuList.add(stu1);
            stuList.add(stu2);
            stuList.add(stu3);
            stuList.add(stu4);
            System.out.println("排序前:=====");
            for(Student stu :stuList){
                System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
            }
            //排序
            Collections.sort(stuList, stu1);  //第一个参数为List 第二个参数为对象的一个实例
            System.out.println("排序后:=====");
            for(Student stu :stuList){
                System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
            }
        }
    
    }
    • 运行结果: 
      这里写图片描述

    方法二:实现Comparable接口 并重写compareTo方法

    /**
     * 学生类 方法二  实现Comparable接口 并重写compareTo方法
     * 
     * @author liaot
     *
     */
    public class Student2 implements Comparable<Student2> {
        private String name; // 姓名
        private int age; // 年龄
    
        // 重写 比较方法 本次例子定义为按年龄比较
        @Override
        public int compareTo(Student2 stu) {
            if (this.age > stu.getAge()) {
                return 1;
            } else {
                return -1;
            }
        }
    
        public Student2(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        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;
        }
    
    }
    • 测试类
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class Main2 {
    
        public static void main(String[] args) {
            //初始化四个不同的学生
            Student2 stu1 = new Student2("路人甲", 20);
            Student2 stu2 = new Student2("路人已", 18);
            Student2 stu3 = new Student2("路人丙", 16);
            Student2 stu4 = new Student2("路人丁", 19);
            //新建List把学生加进List
            List<Student2> stuList = new ArrayList<>();
            stuList.add(stu1);
            stuList.add(stu2);
            stuList.add(stu3);
            stuList.add(stu4);
            System.out.println("排序前:=====");
            for(Student2 stu :stuList){
                System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
            }
            //排序
            Collections.sort(stuList);  //只有一个参数参数为List
            System.out.println("排序后:=====");
            for(Student2 stu :stuList){
                System.out.println("姓名:"+stu.getName() +" 年龄"+stu.getAge());
            }
        }
    
    }
    • 运行结果 
      这里写图片描述

    三、总结:两种方式写法和用法上的区别: 

    这里写图片描述

    版权声明:欢迎转载,请注明原文地址:http://blog.csdn.net/c1481118216 http://blog.csdn.net/c1481118216/article/details/53496083,http://blog.csdn.net/c1481118216/article/details/53496083
     
     
  • 相关阅读:
    界面控件DevExpress WPF入门 表达式编辑器功能
    Telerik UI for WPF全新版本——拥有Office2019高对比度主题
    DevExpress报表控件v21.2 全新的Visual Studio报表设计器
    报告生成器FastReport .NET入门指南 在Linux中启动应用程序
    文档控件DevExpress Office File API v21.2 自定义字体加载引擎
    UI组件库Kendo UI for Angular入门 如何开始使用图表功能
    WPF界面工具Telerik UI for WPF入门级教程 设置一个主题(二)
    DevExtreme初级入门教程(React篇) TypeScript支持
    报表开发利器FastReport .NET v2022.1 添加关键对象和属性
    python项目打包(一) setup.py、Python源代码项目结构
  • 原文地址:https://www.cnblogs.com/zxwBj/p/8602986.html
Copyright © 2011-2022 走看看