当前位置:编程学习 > JAVA >>

重写equals方法

重写equals方法,判断对象person的{1,2}等于{2,1} --------------------编程问答-------------------- 条件太少了啊 没法写 --------------------编程问答-------------------- public boolean equals(Object o){
   .........
   .........
   return true/false;
}
这样写就行了,方法的判断内容自己写啊,又不知道你类名是什么,判断方法是什么。这叫人怎么回答 --------------------编程问答-------------------- 这么说吧,就是List中存放的对象,我想把两个类似于{2,3} {3,2}这样的对象去重复,留一个! 
有什么办法, --------------------编程问答--------------------
public boolean equals(Object o)
{
    if(o.a==this.b && o.b==this.a)
        return true;
    else 
        return false;
}
--------------------编程问答--------------------
引用 4 楼 zk3389 的回复:
Java code1234567public boolean equals(Object o){    if(o.a==this.b && o.b==this.a)        return true;    else         return false;}

+ 1 --------------------编程问答-------------------- 看一下对你有没有帮助
对 equals()方法和与equals()相关方法的理解:
1.equals(Object obj)是Object类的一个方法,而Object是每个类的父类,因此所有的对象(包括数组)都能实现equals()方法,对于Object类的equals()方法等价于“==”;
2.public boolean equals(Object obj)主要用于判断当前对象与obj对象是否 相等;
3.equals()方法的特性:(对于任何引用非空的x和y,z)
自反性:x.equals(x)  返回true;
对成性:如果 x.equals(y) 返回true,则y.equals(x)也返回true;
传递性:如果 x.equals(y),y.equals(z),则x.equals(z)也成立;
一致性:只要x,y的引用值没有改变,那么对于多次调用x.equals(y),始终返回true或false;
注意:对于x.equals(null) 终是false;
4.在String类中用equals()方法,应该注意:
String类中的equals()方法比较的是当前字符串与传进来字符串的值是否相等;
String类的对象只能 用equals()方法判断,而不能用“=”;
5.对于“==”;
a:对于原生数据类型,比较的是两边的数值是否相等;
b:对于引用类型的对象,比较的是两边的对象是否指向同一个对象或同一个地址。
简单代码形式:
public class StringTest1
{
    public static void main(String [] args)
    {
        String str1 = new String("zm");//equals()对于String 是比较字符串对象的内容
        String str2 = new String("zm");
        System.out.println(str1.equals(str2 ));//返回true
        
        
        String str3 = "aa";//直接给字符串赋值
        String str4 = "bb";
        System.out.println(str3.equals(str4 ));//返回false
        
        Object object = new Object();
        Object object2 = new Object();//equals()比较Object引用类型变量的地址,
        System.out.println(object.equals(object2));// 返回false
        System.out.println(object.equals(object));//返回true
        
        String str5 = "hello";
        //String str6 = "world";
        String str7 = str5+"world";
        String str8 = "helloworld";
        System.out.println(str7==str8);//返回false
        System.out.println(str7.equals(str8));//返回true
        
    }
}
在hashSet中用equals()方法的比较值时,还要考虑hashCode()方法,hashCode()也是Object类的一个方法,此因任何Object类的子类也能继承和重写hashCode()方法;
a:在一个程序执行的过程中,对于同一个对象的hashCode()多次调用,但是返回的值是相同的;
b;对于两个对象来说,如果使用equals()方法比较返回true,那么这两个对象的hashCode值一定是相同的,因为这两个对象指向同一个地址;
c:对于两个对象来说,如果使用equals()方法比较返回false,说明没有指向同一个地址,那么这两个对象的hashCode值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能;
d:对于Object类来说,不同的Object对象的hashCode值是不同的(Object类的hashCode值表示的是对象的地址),这与哈希表以及函数有关。
注意:在使用hashSet时肯定用到hashCode()方法,判断已在集合中的值与增加对象的hashCode()值是不是相同。如果值不同,直接加到集合当中,如果hashCode值相同,在进行equals()方法比较,如果equals()方法返回true,表示对象已经加入到集合中,就不会加进去,否则就会把这个对象加到集合中。
--------------------编程问答-------------------- 如果你是做自定义对象之间的比较,应该让其继承Comparable接口,并实现compareTo()方法。 --------------------编程问答--------------------
引用 2 楼 yh0123123 的回复:
public boolean equals(Object o){
   .........
   .........
   return true/false;
}
这样写就行了,方法的判断内容自己写啊,又不知道你类名是什么,判断方法是什么。这叫人怎么回答




参考这个. --------------------编程问答--------------------
引用 4 楼 zk3389 的回复:
Java code?1234567public boolean equals(Object o){    if(o.a==this.b && o.b==this.a)        return true;    else         return false;}

+1
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,