关闭

对象数组排序

标签: java对象数据结构排序
314人阅读 评论(0) 收藏 举报
分类:

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

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()中的参数顺序可以实现升序和降序的排序。

0
0
查看评论

Java中对象数组的排序

Java中对象数组的排序 By icycandy, at 2009/03/06 09:43:00 在Java中排序似乎没有C++中那么方便,搜索了很久看了很多文章,大概都是说要用Arrays或ArrayList或List或Collection等来实现,最头疼的是源代码要分开多个文...
  • hao5743
  • hao5743
  • 2014-10-26 15:29
  • 7150

javascript 对象数组排序

javascript 对象数组排序 作者: admin 日期: 二月 13, 2011发表评论 (3)查看评论 javascript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。 其基本的用法...
  • kavensu
  • kavensu
  • 2014-01-04 21:55
  • 16481

iOS 对数组中的对象进行排序

1、直接对数组中的对象排序: //对数组进行降序     NSComparator cmptr = ^(id obj1, id obj2){         if ([obj1 integerV...
  • huobanbengkui
  • huobanbengkui
  • 2016-08-09 11:41
  • 987

对象数组排序,利用jquery

在网络上查到的 http://mmz06.blog.163.com/blog/static/12141696201102935021258/   jQuery数组和字符串--对象数组排序 <!-- $( ...
  • apensu
  • apensu
  • 2011-12-20 15:31
  • 15626

Java自定义对象数组、集合排序

//实体类: package CategoryDp2; import java.util.Comparator; public class Cat implements Comparator,Comparable{ private int weight; public ...
  • u011921490
  • u011921490
  • 2015-01-18 14:41
  • 1319

数组排序函数总结

此图片截取自PHP手册,对数组排序做了详细的解释。
  • xiao_tommy
  • xiao_tommy
  • 2016-11-18 10:53
  • 182

对象数组求最大值

Description 建立一个对象数组,内放n( Input n和n个学生的学号、成绩 Output 成绩最高者的学号和成绩 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Outpu...
  • u014371381
  • u014371381
  • 2014-04-02 22:58
  • 359

一个数组对象的排序

http://topic.csdn.net/t/20030515/16/1788480.html      content1   =   new   Array();     content1[0]   ...
  • E_wsq
  • E_wsq
  • 2008-11-28 17:49
  • 667

C++对象、对象数组的排序

C++对象、对象数组的排序
  • yinkaishikd
  • yinkaishikd
  • 2015-06-24 12:20
  • 1924

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

var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ];function compare(property){ return ...
  • qq_17335153
  • qq_17335153
  • 2016-09-18 14:55
  • 10281
    个人资料
    • 访问:89108次
    • 积分:1568
    • 等级:
    • 排名:千里之外
    • 原创:68篇
    • 转载:0篇
    • 译文:0篇
    • 评论:48条
    最新评论
    友情链接