Java实现对象按照其属性排序的两种方法示例

 更新时间:2020-05-21 10:56:48   作者:佚名   我要评论(0)

本文实例讲述了Java实现对象按照其属性排序的两种方法。分享给大家供大家参考,具体如下:
有时候需要对对象列表或数组进行排序,下面提供两种简单方式:
方法一:将

本文实例讲述了Java实现对象按照其属性排序的两种方法。分享给大家供大家参考,具体如下:

有时候需要对对象列表或数组进行排序,下面提供两种简单方式:

方法一:将要排序的对象类实现Comparable<>接口。

首先,创建学生类,我们将根据学生成绩对学生进行排序:

/**
*  学生类
*/
class Student implements Comparable<Student>{

  String name;
  int age;
  int score;

  public Student(String name, int age,int score) {
    this.name = name;
    this.age = age;
    this.score = score;
  }

  @Override
  public int compareTo(Studento) {
    // TODO Auto-generated method stub
    return this.age - o.age;
  }
}

public class Test {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<Student> students = new ArrayList<>();
    students.add(new Student("大铭", 19, 89));
    students.add(new Student("来福", 26, 90));
    students.add(new Student("仓颉", 23, 70));
    students.add(new Student("王磊", 18, 80));

    System.out.println("排序前:");
    for (Student student : students) {
      System.out.println("姓名:"+student.name+" 年龄:"+student.age+" 成绩:"+student.score);
    }

    // 排序
    Collections.sort(students);

    System.out.println("排序后:");
    for (Student student : students) {
      System.out.println("姓名:"+student.name+" 年龄:"+student.age+" 成绩:"+student.score);
    }
  }
}

同理,也可以根据对象的其他属性进行排序。

方法二:使用Comparator匿名内部类实现。

还是使用同一个例子,按成绩将学生排序:

/**
*  学生类
*/
class Student {

  String name;
  int age;
  int score;

  public Student(String name, int age,int score) {
    this.name = name;
    this.age = age;
    this.score = score;
  }
}

public class Test {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList<Student> students = new ArrayList<>();
    students.add(new Student("大铭", 19, 89));
    students.add(new Student("来福", 26, 90));
    students.add(new Student("仓颉", 23, 70));
    students.add(new Student("王磊", 18, 80));

    System.out.println("排序前:");
    for (Student student : students) {
      System.out.println("姓名:"+student.name+" 年龄:"+student.age+" 成绩:"+student.score);
    }

    Collections.sort(students,new Comparator<Student>() {

      @Override
      public int compare(Student o1, Student o2) {
        // TODO Auto-generated method stub
        return o1.age-o2.age;
      }
    });

    System.out.println("排序后:");
    for (Student student : students) {
      System.out.println("姓名:"+student.name+" 年龄:"+student.age+" 成绩:"+student.score);
    }
  }
}

也可以实现按对象属性将对象列表排序。

更多关于java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

您可能感兴趣的文章:

  • java根据List内对象的属性排序方法
  • java ArrayList集合中的某个对象属性进行排序的实现代码
  • java中List对象排序通用方法
  • java 对象数组排序
  • Java按照List内存储的对象的某个字段进行排序的实例
  • java实现List中对象排序的方法
  • Java实体类中Set按照对象的某个字段对set排序
  • java中如何实现对类的对象进行排序
  • 如何基于Java实现对象List排序
  • java8新特性将List中按指定属性排序过滤重复数据的方法

相关文章

  • Java实现对象按照其属性排序的两种方法示例

    Java实现对象按照其属性排序的两种方法示例

    本文实例讲述了Java实现对象按照其属性排序的两种方法。分享给大家供大家参考,具体如下: 有时候需要对对象列表或数组进行排序,下面提供两种简单方式: 方法一:将
    2020-05-21
  • JAVA 多态操作----父类与子类转换问题实例分析

    JAVA 多态操作----父类与子类转换问题实例分析

    本文实例讲述了JAVA 多态操作----父类与子类转换问题。分享给大家供大家参考,具体如下: JAVA语言中, 对象变量是多态的 每个子类对象都算是父类对象(子类对象可以当
    2020-05-21
  • vue+Element中table表格实现可编辑(select下拉框)

    vue+Element中table表格实现可编辑(select下拉框)

    最近在工作中遇到一个问题,需要在表格中实现数据可编辑状态,具体情况是需要在单元格里加入下拉框;并且每个下拉框的数组数据是不一样的,具体是根据当前行前面数据
    2020-05-21
  • python 解决Fatal error in launcher:错误问题

    python 解决Fatal error in launcher:错误问题

    python终端用pip list出现这个错误Fatal error in launcher: 只要终端用到pip的东西,都在前面加python -m,比如python -m pip list 好了,完美解决! 补充知识:p
    2020-05-21
  • Python中的xlrd模块使用原理解析

    Python中的xlrd模块使用原理解析

    on里面的xlrd模块详解(一) - 疯了的小蜗 - 博客园【内容】:> 那我就一下面积个问题对xlrd模块进行学习一下: 什么是xlrd模块? 为什么使用xlrd模块? 1.什
    2020-05-21
  • django的403/404/500错误自定义页面的配置方式

    django的403/404/500错误自定义页面的配置方式

    要实现标题的功能,总共分四步: 1.创建html错误页 2.配置settings 3.编写视图 4.配置url 我的开发环境: django1.10.3 python2.7.12 前期工作 创建项目及app $ dj
    2020-05-21
  • Java IO字符流缓冲区实现原理解析

    Java IO字符流缓冲区实现原理解析

    字符流的缓冲区 缓冲区的出现,提高了对数据的读写效率,对应的类:BufferedWriter,BufferedReader 缓冲区要结合流才可以使用,缓冲区是在流的基础上对流的功能进行
    2020-05-21
  • Android 开发使用PopupWindow实现弹出警告框的复用类示例

    Android 开发使用PopupWindow实现弹出警告框的复用类示例

    本文实例讲述了Android 开发使用PopupWindow实现弹出警告框的复用类。分享给大家供大家参考,具体如下: Android开发中相信下图所示界面大家都不陌生,该种弹出框的
    2020-05-21
  • 浅谈React中组件逻辑复用的那些事儿

    浅谈React中组件逻辑复用的那些事儿

    基本每个开发者都需要考虑逻辑复用的问题,否则你的项目中将充斥着大量的重复代码。那么 React 是怎么复用组件逻辑的呢?本文将一一介绍 React 复用组件逻辑的几种方
    2020-05-21
  • Django 解决新建表删除后无法重新创建等问题

    Django 解决新建表删除后无法重新创建等问题

    起因 同步表的过程中,我手动将数据库中的一个表删除了,此时再去执行命令,发现不能再数据库中新建表了 修改了表结构以后执行python3 manage.py migrate 报错: No
    2020-05-21

最新评论