社区
Java SE
帖子详情
关于java,求大神讲解
wy901024
2012-10-04 10:12:10
在什么情况下,要重写equals和hashCode方法啊!重写之前为什么不能直接用呢?求举例子
...全文
280
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]
Android调试和分析
韩超
大神
的PPT,主要
讲解
: Android中的Linux命令 Android的特殊命令
Java
命令行工具
java
界的10位
大神
_
java
大神
潜在的十个特征
java
以其简单,稳健,高效的特性对于编程来说是个不错的选择,那么我们该如何学习掌握这门语言呢?下面列举了一些关于学习
java
的一些心得,希望对大家有所帮助1.订阅最新资讯学习新技术首先要做的是订阅相关的技术社区论坛。我们并非是独行者。很多人都和我们一样在研究着相同的技术。只对某个框架概念做验证是不难,但是当你将这些概念应用到实际的项目中时,那么各种各样的问题,各种在搜索不到解决方法的难题就会接踵...
初级递归困惑,初学。实在没明白不理解,
求
大神
讲解
【代码】初级递归困惑,初学。实在没明白不理解,
求
大神
讲解
。
探索
Java
之旅:27天成为
Java
大神
探索
Java
之旅:27天成为
Java
大神
项目地址:https://gitcode.com/gh_mirrors/jav/
Java
在这个快速迭代的编程世界里,掌握一门像
Java
这样的强大语言是提升自身竞争力的关键。这个开源项目,"27天成为
Java
大神
",旨在帮助初学者和有经验的开发者通过系统性的学习计划,迅速提升
Java
技能。 项目介绍 该项目精心设计了一套为期27天的学习...
Java
最新
Java
Swing
大神
必经之路6:
Java
Swing 的Document类详解,来自阿里巴巴佛系
Java
程序员的指南
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。更多JVM面试整理:本文已被CODING开源项目:【一线大厂
Java
面试题解析+核心总结学习笔记+最新
讲解
视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取。
Java SE
62,627
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章