`

重写compareTo方法

    博客分类:
  • java
阅读更多
//JAVA中用于对象排序的比较器Comparable接口和compareTo()方法
//面向对象的三大特性:封装,继承,多态。
//JAVA中的比较器接口Comparable用于数组对象的排序,要使用此功能,必须让类继承自Comparable接口,重写compareTo(Object obj)方法。
import java.util.*;
class Person implements Comparable{    //实现了comparable接口,必须重写compareTo方法!!!
	private String name;
	private int age;
	private float score;
	
	public Person(String name,int age,float score){
	   this.name=name;
	   this.age=age;
	   this.score=score;
	   }
	
   public String toString(){
    return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score;
    }
   
    public int compareTo(Object obj){   //compareTo方法是实现
     Person p = (Person)obj;
			     if(p.score>this.score){
			    	 	return 1;
			      }
			      else if(p.score<this.score){
			    	  	return -1;
			       }
			       else{
				        if(p.age>this.age){
				         return 1;
				        }
				         else if(p.age<this.age){
				         return -1;
				         }
				         else{
				        	 return 0;
			         		}
			        }
     }  						  //compareTo方法结束
}								//类结束
public class OODemo35{
   public static void main(String []args){
    Person p[] = new Person[5];
    p[0] = new Person("张三 ",23,96);
    p[1] = new Person("张三2",24,96);
    p[2] = new Person("张三3",21,94);
    p[3] = new Person("张三4",22,98);
    p[4] = new Person("张三5",20,89);
   
    Arrays.sort(p);    				//对数组p内的元素进行了遍历操作(排序) 默认的方法是compareTo
    for(int x=0;x<p.length;x++){
     System.out.println(p[x]);   		 //输出数组元素时默认的是toString()方法
     }   
    }
   }
//输出结果:
//姓名:张三4, 年龄:22, 成绩:98.0
//姓名:张三2, 年龄:24, 成绩:96.0
//姓名:张三 , 年龄:23, 成绩:96.0
//姓名:张三3, 年龄:21, 成绩:94.0
//姓名:张三5, 年龄:20, 成绩:89.0
//--------------------------------------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics