`
liuxi1024
  • 浏览: 384630 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 对象排序--Comparable

阅读更多

1. 要求

对象student(id,name,sex,scroe,old);先按scroe排序,当scroe值相同时按old排序

 

2.解决办法,通过Arrays.sort(Object[])静态方法实现,但是对象需要实现Comparable

 

3.studen.java

public class Student implements Comparable {

	private Integer id;
	private String name;
	private String sex;
	private double score;
	private Integer old;
	
	public Student(Integer _id,String _name,String _sex,double _score,Integer _old){
		this.setId(_id);
		this.setName(_name);
		this.setSex(_sex);
		this.setScore(_score);
		this.setOld(_old);
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public double getScore() {
		return score;
	}

	public void setScore(double score) {
		this.score = score;
	}

	public Integer getOld() {
		return old;
	}

	public void setOld(Integer old) {
		this.old = old;
	}

	@Override
	public int compareTo(Object o) {
		Student others = (Student) o;
		if (this.score > others.score)
			return -1;
		else if (this.score == others.score) {
			if (this.old > others.old)
				return -1;
			else if (this.old == others.old)
				return 0;
			else
				return 1;
		} else
			return 1;
	}
}

 

说明:compareTo(Object o) 根据jdk API是

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 

 

4.测试类StudentSortDemo.java

public class StudentSortDemo {

	public static void main(String[] args) {
		Student[] student = {
                new Student(1,"Daffy","m",88, 23),   
                new Student(2,"Dewey","w",69, 44),
                new Student(3,"Howard","m",66, 32),   
                new Student(4,"Louie","w",78, 25),   
                new Student(5,"Donald","m",69, 30),   
                new Student(6,"Huey","w",55, 24)   
        };   
           
        System.out.println("Before sorting:");   
        display(student); 
           
        Arrays.sort(student);
           
        System.out.println("\nAfter sorting:");   
        display(student);   
    }   
       
    public static void display(Student[] student){   
        for (int i = 0; i < student.length; i++) {
            System.out.println("name:" + student[i].getName()+",score:"+student[i].getScore()+",old:"+student[i].getOld());
        }   
    }   
}

 

输出结果为:

Before sorting:
name:Daffy,score:88.0,old:23
name:Dewey,score:69.0,old:44
name:Howard,score:66.0,old:32
name:Louie,score:78.0,old:25
name:Donald,score:69.0,old:30
name:Huey,score:55.0,old:24

 

After sorting:
name:Daffy,score:88.0,old:23
name:Louie,score:78.0,old:25
name:Dewey,score:69.0,old:44
name:Donald,score:69.0,old:30
name:Howard,score:66.0,old:32
name:Huey,score:55.0,old:24 

 

 

分享到:
评论

相关推荐

    java,Comparable接口实例

    此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行...

    AIC的Java课程1-6章

     知道实现比较器(Comparable,Comparator)用于排序算法(多态性)。  [*]了解同步包装和不可修改包装。 第12章 IO与串行化 2课时  了解Java IO 中类的层次结构,介绍Java IO采用的装饰...

    对比Java中的Comparable排序接口和Comparator比较器接口

    Comparable和Comparator接口都可用作普通意义上对象间的比大小,但两个接口在实例化方面的用法不尽相同,接下来我们就来详细对比Java中的Comparable排序接口和Comparator比较器接口

    Java学习笔记-个人整理的

    {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...

    JAVA集合的使用(List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类、equals、hashCode)

    要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode

    java竞赛中各种自定义排序模板

    如果要按照某一个属性来对这个对象数组进行升序或降序排序,那么就需要用Arrays.sort(),但是这个创建的类一定要继承Comparable这个接口并重写compareTo方法。代码如下: package 排序; import java.util.Arrays; ...

    Java基础知识点.html

    哈希值 LinkedHashSet TreeSet 自然排序Comparable 比较器排序Comparator Set集合 并发修改异常 LinkedList集合 ArrayList集合 List集合 Collection集合概述 冒泡排序 Object 异常 Math 包装类 Calendar类 ...

    Compable和Comparator自定义对象属性排序

    可以通过两种方式自定义对象的属性大小进行比较,对一个list或数组对根据属性排序一个list或数组

    java实现别踩白块儿源码-SortedList:用Java编写的SortedList的实现。可以与实现Comparable接口的对象一起使用

    它是使用Comparator对象构造的,该对象可以将两个对象进行比较,从而使SortedList可以将其元素按升序或降序排序。 当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法...

    Java开发详解.zip

    031113_【第11章:Java常用类库】_比较器(Comparable、Comparator)笔记.pdf 031114_【第11章:Java常用类库】_观察者设计模式笔记.pdf 031115_【第11章:Java常用类库】_正则表达式笔记.pdf 031116_【第11章:Java...

    Java经典编程源码基础例程300.zip

    实例056 Java对象的深克隆 82 实例057 序列化与对象克隆 84 实例058 深克隆效率的比较 87 第7章 面向对象进阶 89 实例059 经理与员工的差异 90 实例060 重写父类中的方法 92 实例061 计算几何图形的面积 93 实例062 ...

    Java集合框架的一个扑克牌小程序

    * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void ...

    用于页面报表排序方法,传输对象需要自己重写方法

    简单的用于页面表单排序的后台方法,通过实现Comparable轻松搞定

    java常用工具类的使用

    而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,...

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    JAVA基础课程讲义

    JAVA对象的序列化和反序列化 161 为什么需要序列化和反序列化 161 对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象...

    Comparable接口和Comparator接口的比较

    实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法...

    新版java教程 全套javase零基础到高级视频教程小白自学编程下载地址

    ·实战teratori迭代器和自定义Comparable:排序接口 ·玩转ava操作文件File类常用操作 ·案例实战IO流Input、Output Stream流 ·详细常见Object、Math、String等核心类 ·掌握枚举Enum和时间日期LocalDate使用 ·面试...

    Java集合框架总结:TreeSet类的排序问题

    java提供了一个Comparable接口,该接口里定义了一个compareTo(Objectobj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。当一个对象调用该方法与另一个对象进行...

    java培训机构内部预习文档

    数组 一维数组、数组参数、数组返回值、数组增删、扩容、排序、二维数组 chp6.面向对象 类和对象、实例变量、构造方法、方法重载、引用的概念、this关键字 chp7.面向对象三大特性 封装、继承、多态、对象创建过程、...

Global site tag (gtag.js) - Google Analytics