对象数组排序

原创 2016年08月30日 22:19:43

       在面对对象编程中数组是经常使用到的数据结构,特别是对象数组的使用。对象属性排序也很常见,例如在一家公司内部员工姓名字典顺序,年龄大小,收入高低等进行排序等。

java中可以通过类实现Comparable接口来实现比较,重写compareTo方法可以达到属性比价的目的。最后只需要调用sort方法就能实现对对象数组进行排序的功能。

下面以公司的员工信息排序对象,给出以下代码:

class Assignmnent implements Comparable<Assignmnent>
{
    private String name="";
    private int id=0;
    private double sal=0;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public double getSal() {
        return sal;
    }
    public void setSal(double sal) {
        this.sal = sal;
    }
    public Assignmnent(String name, int id, double sal) {
        super();
        this.name = name;
        this.id = id;
        this.sal = sal;
    }
    public int compareTo(Assignmnent arg0) {
        if(arg0 instanceof Assignmnent)
        {
            ///return Double.compare(this.sal,arg0.sal);
            ///改变参数位置可以实现不同的排序方式
            return Double.compare(arg0.sal,this.sal);   
        }
        return 0;
    }
    public String toString()
    {
        String s="";
        return s="姓名 "+this.getName()+" 工作号是: "+this.getId()+" 工资是 "+this.getSal();


    }


}

      实现Comparable接口重写compareTo方法,Double.compare(arg0.sal,this.sal)是依据员工sal属性进行比较,Double.compare(arg0.sal,this.sal)会返回一个int数值,若arg0.sal>this.sal则会返回一个正数(如+1),相等则返回0,小于返回一个负数(-1)。之后调用Arrays.sort(assignment)测试即可。

下面是测试代码:

Assignmnent[] assignment=new Assignmnent[6];
        assignment[0]=new Assignmnent("Bob",1001,1000.8);
        assignment[1]=new Assignmnent("James",1002,999.8);
        assignment[2]=new Assignmnent("Kccy",1003,998.8);
        assignment[3]=new Assignmnent("Lours",1004,1008.8);
        assignment[4]=new Assignmnent("Frui",1005,1010.8);
        assignment[5]=new Assignmnent("Dual",1006,1018.8);
        for(int i=0;i<assignment.length;i++)
        {
            System.out.println(assignment[i].toString());
        }
        //很明显要对对象数组进行排序必须要实现Comparable接口 重写compareTo方法之后才能调用Arrays.sort()方法

        Arrays.sort(assignment);
        System.out.println("按工资进行排序后:");
        for(int i=0;i<assignment.length;i++)
        {
            System.out.println(assignment[i].toString());
        }
        if(assignment[0] instanceof Comparable)
        {
            System.out.println("实现了这个接口");
        }

以下是测试结果:

姓名 Bob 工作号是: 1001 工资是 1000.8
姓名 James 工作号是: 1002 工资是 999.8
姓名 Kccy 工作号是: 1003 工资是 998.8
姓名 Lours 工作号是: 1004 工资是 1008.8
姓名 Frui 工作号是: 1005 工资是 1010.8
姓名 Dual 工作号是: 1006 工资是 1018.8
按工资进行排序后:
姓名 Dual 工作号是: 1006 工资是 1018.8
姓名 Frui 工作号是: 1005 工资是 1010.8
姓名 Lours 工作号是: 1004 工资是 1008.8
姓名 Bob 工作号是: 1001 工资是 1000.8
姓名 James 工作号是: 1002 工资是 999.8
姓名 Kccy 工作号是: 1003 工资是 998.8

通过改变compareTo()中Double.compare()中的参数顺序可以实现升序和降序的排序。

版权声明:本文为博主原创文章,未经博主允许不得转载。

arraylist 对象 数组排序

  • 2014年11月24日 17:42
  • 1.87MB
  • 下载

javascript 对象数组排序

javascript 对象数组排序 作者: admin 日期: 二月 13, 2011发表评论 (3)查看评论 javascript实现多维数组、对象数组排序,其实用的就是...
  • kavensu
  • kavensu
  • 2014年01月04日 21:55
  • 16302

javascript 实现数组或对象排序

手头上在跟进一个在移动端显示统计分析的需求,其中有一个表格需要支持排序。拿到需求后就上网各种搜控件,没有搜到合适的控件(不知道是不是我搜的姿势不对!求前端大神救救我这个java菜鸟!!),就直接手写了...

使用Comparable、Comparator接口实现对对象数组、List集合自定义排序

使用Comparable、Comparator接口实现对对象数组、List集合的自定义排序。

如何排序数组(把对象按照各自属性值的顺序出现在列表中)

1——使用 NSSortDescriptor(分类描述符类) 类 为每个需要用于排序的属性,创建对象; 2——创建 NSArray 数组,将所有创建的 NSSortDescriptor 对象传入这个...

Java中对象数组的排序

Java中对象数组的排序 By icycandy, at 2009/03/06 09:43:00 在Java中排序似乎没有C++中那么方便,搜索了很久看了很多文章,大概都是说要用A...
  • hao5743
  • hao5743
  • 2014年10月26日 15:29
  • 6737

【反射】基于反射的实际应用——任意对象数组的排序

日常应用中,经常碰到这么样的问题,比如说,我有一个int数组需要排序,还有一个long数组进行排序,可能还有未知的对象数组需要排序,就好比基础题里边的给学生成绩排序那样,每次我们都要重新写一个代码去排...

javaScript中使用 sort方法根据数组中对象的某一个属性值进行排序

javaScript中使用 sort方法根据数组中对象的某一个属性值进行排序
  • ccplzll
  • ccplzll
  • 2017年01月06日 14:04
  • 2616

javascript对象数组排序

本文章讲述了利用一个函数可以作为另一个函数的结果返回的这个特性来实现了对对象数组按属性来排序。...

数组对象的Arrays排序两种方式

例如一个学生对象,初始化了10个Student对象,Student对象有name和sno两个属性,在数组里存放了10个Student对象,但是他们的排序是无序的,我想在数组内按照sno去排序。Arra...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对象数组排序
举报原因:
原因补充:

(最多只允许输入30个字)