社区
Java SE
帖子详情
关于java,求大神讲解
wy901024
2012-10-04 10:12:10
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
...全文
268
9
打赏
收藏
关于java,求大神讲解
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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]
Android调试和分析
韩超
大神
的PPT,主要
讲解
: Android中的Linux命令 Android的特殊命令
Java
命令行工具
java
界的10位
大神
_
java
大神
潜在的十个特征
下面列举了一些关于学习
java
的一些心得,希望对大家有所帮助1.订阅最新资讯学习新技术首先要做的是订阅相关的技术社区论坛。我们并非是独行者。很多人都和我们一样在研究着相同的技术。只对某个框架概念做验证是不难...
初级递归困惑,初学。实在没明白不理解,
求
大神
讲解
【代码】初级递归困惑,初学。实在没明白不理解,
求
大神
讲解
。
探索
Java
之旅:27天成为
Java
大神
探索
Java
之旅:27天成为
Java
大神
项目地址:https://gitcode.com/gh_mirrors/jav/
Java
在这个快速迭代的编程世界里,掌握一门像
Java
这样的强大语言是提升自身竞争力的关键。这个开源项目,"27天成为
Java
大神
&...
java
8实战教程,[
JAVA
] 汪
大神
Java
8新特性及实战视频教程完整版
课程名称:汪
大神
JAVA
8新特性及实战视频教程完整版课程简介:汪
大神
Java
8新特性及实战视频教程完整版----------------------课程目录------------------------------源码
Java
8实战视频-01让方法参数具备行为能力....
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章