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

所属分类: 软件编程 / java 阅读数: 39
收藏 0 赞 0 分享

本文实例讲述了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 中maven pom.xml文件教程详解

这篇文章主要介绍了java 中maven pom.xml文件教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

spring boot整合netty的实现方法

这篇文章主要介绍了spring boot整合netty的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Netty与Spring Boot的整合实现

这篇文章主要介绍了Netty与Spring Boot的整合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring动态加载bean后调用实现方法解析

这篇文章主要介绍了Spring动态加载bean后调用实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现画图板上画一条直线

这篇文章主要为大家详细介绍了java实现画图板上画一条直线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java通过python命令执行DataX任务的实例

今天小编就为大家分享一篇Java通过python命令执行DataX任务的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

springBoot集成redis的key,value序列化的相关问题

这篇文章主要介绍了springBoot集成redis的key,value序列化的相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

java实现登录案例

这篇文章主要为大家详细介绍了java实现登录案例的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java解决请求跨域的两种方法

这篇文章主要为大家详细介绍了java解决请求跨域的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SpringBoot集成Beetl后统一处理页面异常的方法

这篇文章主要介绍了SpringBoot集成Beetl后统一处理页面异常的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享
查看更多