重写equlas,hashcode . 和比较类大小

来源:互联网 发布:js li默认选中样式 编辑:程序博客网 时间:2024/05/22 13:27
package com.andlinks.yourturn.entity;/** * Created by cly on 2017/8/14. */public class T implements Comparable {    private Integer id;    private String name;    public T(){}    public T(Integer id,String name){        this.id=id;        this.name=name;    }    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;    }    @Override    public int hashCode() {        int hashCode=hashCode();        hashCode=hashCode+ (getId()!=null?getId():12);        return hashCode;    }    @Override    public boolean equals(Object obj) {        if(this==obj)return true; //检测this与obj是否引用同一个对象        if(obj==null)return false;//检测obj是否为null,如果为null,返回false。这项检测是很有必要的。        T t=(T)obj;        if(this.getId()==t.getId()&&this.getName()==t.getName()){            return true;        }        return false;    }    @Override    public String toString() {        return super.toString();    }    public static  void main(String[] args){        T t=new T();        t.name="alan";        t.id=1;        T b=new T(2,"alan");        if(t.equals(b)){            System.out.print("这是相等的");        }else{            System.out.print("这是不相等的");        }        System.out.println("\n"+t.getClass().getName());        System.out.print(t.compareTo(b));    }    @Override    public int compareTo(Object o) {        T t=(T) o;        int x=this.getId();        int y=t.getId();        if(x>y){            return 1;        }else if(x<y){            return -1;        }else{            return 0;        }    }}

重写equlas再重写hashcode,是为了提高效率。如果hashcode不相同,就没必要比较equlas了。
比较两个类是否相同就实现Comparable接口就行了啊。然后用自己的逻辑来,我这儿id。