社区
Java SE
帖子详情
关于java,求大神讲解
wy901024
2012-10-04 10:12:10
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
...全文
263
9
打赏
收藏
关于java,求大神讲解
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wb826337736
2012-10-06
打赏
举报
回复
equals用于比较两个字符串的地址是否相同,
wangchen19931113
2012-10-05
打赏
举报
回复
其实equals比较的是字符串的相等,然而能比较的前提是要相同类型,指针是内存地址,而字符串是内容
夏借冬凉
2012-10-04
打赏
举报
回复
equals为true,hashCode相同,就是==
夏借冬凉
2012-10-04
打赏
举报
回复
如果是字符串,equals是比较字符串是否一样;如果是对象,equals是比较内在地址,也就是说是不是同一个对象。重写equals一般是对对象来说,如果两个对象不是同一个对象,但是对象某个值或某些值一样,你就认为他们是相同的话,可以重写equals来满足需求。例如,方块5与黑桃5是不同的对象,但它们的值一样就认为相等的话,可以重写equals,
重写hashCode就是对==作用的,思路和上面讲的一样。
希望把你误导了。
zhaoming262350
2012-10-04
打赏
举报
回复
你可以看一下这个代码:重写了equals() ,hashCode()
import java.util.HashSet;
public class SetTest3
{
public static void main(String[] args)
{
HashSet set = new HashSet();
Student s1 = new Student("zhangsan");
Student s2 = new Student("zhangsan");
set.add(s1);
set.add(s2);
System.out.println(set);
}
}
class Student
{
String name;
public Student(String name)
{
this.name = name;
}
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (name == null)
{
if (other.name != null)
return false;
}
else if (!name.equals(other.name))
return false;
return true;
}
}
a363722188
2012-10-04
打赏
举报
回复
我在这里发表一下我的理解:首先你的弄清楚是String的equals方法还是Object对象的(非String对象) ,如果是String那么equal是比较的是字符串的内容(例子 String s="my";String s2="my";那么s.equals(s2)为true 如果是通过new的方式则需要重写String s=new String("my")), 而Object对象的equals默认比较的是引用地址,意思就是默认实现==一样的功能,不是真正的比较对象的内容,所以这个时候就要自己重写equals方法啦。 这是我个人理解,不对的请大家指正。
liangtu
2012-10-04
打赏
举报
回复
比如equals,默认的equals是"==",可以比较数值,但是涉及到对象,肯定返回false。如果我们有一大堆对象需要排序,这个相等的依据是和业务相关的,那么就需要重写equals方法才能进行判断。
LogicTeamLeader
2012-10-04
打赏
举报
回复
直说equals,如果你定义的类的成员变量有引用类型,就需要重写equals方法。
这个跟c++中的指针作为成员变量时要重写拷贝构造函数一样。
随便找本书看,都会仔细的说这个。
[Quote=引用楼主 的回复:]
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
[/Quote]
ACM算法
大神
讲解
常用数据结构与算法优化(
java
版与c++版)
基本上一流的互联网公司面试都必考数据结构与算法,此资源不仅介绍了基本的数据结构与算法,更是把优化思想
讲解
的淋漓尽致,是你巩固基础和进阶的不二之选!
设计模式 含代码及
讲解
设计模式 含代码及
讲解
设计模式 含代码及
讲解
易动学院-《
java
基础课》视频教程(一)
本课程专为零基础学员准备,从
java
基础到
java
大神
的进阶之路。课程内容
讲解
详细,注重细节。
java
collections design.pdf
java
collection 框架设计
大神
Josh Bloch,从各个角度给我们
讲解
java
collection 设计背景和理念。
java
爬虫.7z
java
爬虫文档,
讲解
使用
java
来撰写爬虫的过程,注意事项和资料,为
java
小白提供入门指导,
大神
请忽略
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章