重寫對象equals和compareTo方法

package day02;
/**
 * 使用該類重寫Object相關方法
 * @author soft01
 *
 */
public class Point {
private int x;
private int y;
public Point(int x, int y) {
 super();
 this.x = x;
 this.y = y;
}
public int getX() {
 return x;
}
public void setX(int x) {
 this.x = x;
}
public int getY() {
 return y;
}
public void setY(int y) {
 this.y = y;

/**
 * 重寫toString
 * toString方法的意義是當前對象以一個
 * 字符串形式表達
 *
 */
public String toString(){
 return "("+ x +","+ y +")";
   
}
/*+
 * equals  方法的作用是比較兩個對象的、
 * 內容是否一致
 *比較的是兩個對象的屬性值是否相同
 *但是並不要求必須所有屬性值都一致
 *這個要結合實際需求而定
 */
public boolean equals(Object o){
 if(o==null){
  return false;
 }
 if(o==this){
  return true;
 }
 if(o instanceof Point){
  Point p=(Point)o;
  return this.x==p.x&&this.y==p.y;
 }
 return false;
}
}


package day02;
public class TestToStringDemo {
 public static void main(String[] args) {
  Point p=new Point(1,2);
  /*
   * Object定義了toString方法,返回的
   * 字符串是該對象的句柄
   * 句柄:類名@地址 就是對象的引用信息
   * 實際對開發沒有什麼幫助,所以當我們
   * 需要使用一個對象的toString方法時,
   * 應當重寫該方法
   */
     String str=p.toString();
       System.out.println(str);
     
        /* System.out.println(object o)
        * 該方法會將給定對象toString返回的
        * 字符串輸出到控制檯
        */
         System.out.println(p);
      
        
     Point p2=new Point(1,2);
         System.out.println(p==p2);
         System.out.println(p.equals(p2));
         /*
          * Object的equals方法就是使用“==="
          * 比較的,所以若希望判斷兩個對象的意義是否相等
          *
          */
      
 }
}


重寫compareTof方法
package day05;
public class Point implements Comparable<Point>{
 private int x;
 private int y;
 public Point(int x, int y) {
  super();
  this.x = x;
  this.y = y;
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 @Override
 /*
  * 該方法的作用是當前對象this與參數o比較大小
  * 具體是幾並不重要
  * 當返回值>0,this>o
  * 當返回值=0,this==o
  * 當返回值<0,this<o
  */
 public String toString (){
  return x+" "+y;
 }
 public int compareTo(Point p) {
  int len=this.x*this.x+this.y*this.y;
  int len1=p.x+p.x+p.y*p.y;
  return len-len1;
 }
}


package day05;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortListDemo1 {
 public static void main(String[] args) {
  List<Point> list=new ArrayList<Point>();
  list.add( new Point(2,3));
  list.add( new Point(3,4));
  list.add( new Point(5,6));
  list.add( new Point(4,5));
  System.out.println(list);
  Collections.sort(list);
  System.out.println(list);
 }
}
//
[2 3, 3 4, 5 6, 4 5]
[2 3, 3 4, 4 5, 5 6]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章