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程序设计有所帮助。

(0)

相关推荐

  • java实现ArrayList根据存储对象排序功能示例

    本文实例讲述了java实现ArrayList根据存储对象排序功能.分享给大家供大家参考,具体如下: 与c++中的qsort的实现极为相似,构建新的比较对象Comparator即可 package demo; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Stu{ public int age; private String name; public Stu(

  • Java按照List内存储的对象的某个字段进行排序的实例

    关键点:将List内存储的对象实现Comparable类,重写它的compareTo()方法即可 Bean: package chc; public class StuVo implements Comparable<StuVo>{ private String id; private String name; private Integer age; public StuVo(String id, String name, Integer age) { this.id=id; this.na

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

    方法一:实现Comparator接口,并重写compare方法 实体类代码: import java.util.Comparator; /** * 学生类 方法一 * 实现Comparator接口 * 并重写compare方法 * @author liaot * */ public class Student implements Comparator<Student>{ private String name; //姓名 private int age; //年龄 //重写 比较方法 本次例

  • java ArrayList集合中的某个对象属性进行排序的实现代码

    开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教. 1.Student的Bean如下: public class Student { private int age; private String name; private String weight; public String getWeight() { return weight; } public void setWeight(String weight) { th

  • java中List对象列表实现去重或取出及排序的方法

    前言 因为在面试的时候碰到几次list的去重和排序,觉着有必要给大家总结一下具体的方法,分享出来供大家学习参考,话不多说了,来一起看看下面介绍的一种做法: 一.list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复.这里Student的重复标准是属性相同,因此需要重写equals和hashcode方法,不知道有几个可以手写出来. student的equals方法: public void equals(Object o){ if(this == o)

  • Java实现储存对象并按对象某属性排序的几种方法示例

    本文实例讲述了Java实现储存对象并按对象某属性排序的几种方法.分享给大家供大家参考,具体如下: 在编程的时候,经常会出现对某一种类的对象们按照某属性进行自定义的排序,比如:学生对象按照age大小排序. 有一种方法就是把age单独提出来排好序,然后按照ages数组的顺序把students重存一次.但是这样太繁琐了,有没有更好的方法呢? 有滴~ 第一种,可以实现边添加边排序,需要用到TreeSet. 第二种,用数组存放对象们,但是不需单独取出某属性排列好再重存,而是在原数组上用比较器重新排一次序.

  • Java实体类中Set按照对象的某个字段对set排序

    背景: User实体类 有个属性是 Set<PositionChange> 职位变更字段 如下: PositionChange实体类 有个属性是positionStartDate 什么时候开始任职此职务的字段 现在有一个需求,想在查询出 User这个对象的时候 ,可以获取到 Set<PositionChange>中 用户最新任职的一条岗位记录,也就是展示当前用户所处的岗位信息. 但是,Set始终的无序的,想要取出Set中PositionChange的positionStartDat

  • java 对象数组排序

    废话不多说直接奉上代码先: import java.util.*; import java.io.*; public class Main{ static int [] dp = new int [1010]; public static void main(String [] args)throws IOException{ Mouse [] mice = new Mouse [1010]; FileReader fr=new FileReader("in.txt"); //读取文件

  • java中List对象排序通用方法

    本文实例讲述了java中List对象排序通用方法.分享给大家供大家参考.具体分析如下: 在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询.如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能. 只要把第一次查出来的结果存放在session中,就可以对list重新排序了.一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的.那要怎么排序

  • 如何基于Java实现对象List排序

    这篇文章主要介绍了如何基于Java实现对象List排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 按照对象中的某个属性,对对象List进行排序. 以初唐四杰的成绩排名为例,对诗人进行排序. Java实现如下: 1.诗人(Poet)类结构,定义如下: /** * Created by Miracle Luna on 2020/1/11 */ public class Poet { private String name; private Do

  • java实现List中对象排序的方法

    本文实例讲述了java实现List中对象排序的方法.分享给大家供大家参考,具体如下: package com.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class NewsManager { /** * @param args */ public static void main(String[

  • java中如何实现对类的对象进行排序

    我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable<T>接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable<T>接口,而在排序时使用Collections.sort(List, Comparator<T>)方法,并实现其中的Comparator<T>接口. 先创建一个简单的学生类: public class Student

随机推荐