哈希值就是“地址”? 现正看到黑马毕向东HashSet,看着看着,有点懵,想问一问哈希值就是“地址”?如果不是,“地址”是什么?如果我就是不想用HashSet存(就想用ArrayList存),算哈希值,还有什么用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果定义一个类没有覆写toString方法的话,那么,打印该对象得到的是类名+@+hash码,下就是这个对象的地址 打印没有toString()方法的类调用的是继承自Object的 toString()方法. public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }HashSet内部实现是通过HashMap实现的,因此会有个hashcode跟被存储类的对应关系的样子,所以查找类的时候,计算hashcode后就能找到对应的类,因为hashcode可能会相同,可能会找到几个类.因此找到的可能是个链表,然后通过equels判定是不是要找的同一个类.因此hashset存储元素可能需要复写equels方法.没完全看懂HashMap的的实现.不过应该是那个意思吧. 不同对象的hashcode是可能相同的,叫做碰撞什么的,因此hashcode值绝不可能是地址. 一个类的equals和hashcode共同规定了实例的相等关系,equals返回true和hashcode相等就相当于实例相等。在类库内部有很多调用,比如集合框架中判断元素相等的部分 理解有误,并不是hashcode 和 equal 共同决定了对象的相等关系,决定对象的相等关系的只有 equal 方法.hashcode只是用来做一些快速判定的,很多equal的方法实现里会用hashcode做一个快速判断,如果hashcode不相等则说明对象不同,但是hashcode相等却不能证明对象相等,还要继续判定.hashcode另一个用处是用来做hashmap的键值哈希映射 哈希算法中,对象的内存地址不参与运算,所以有可能出现哈希值相同的情况,但是,两个相同的对象(引用同一处地址)的哈希值一定相同。equals方法中,比较的是两对象的属性是否相同。 生产消费线程问题,为什么要加synchronized 传说是Tencent面试题~~~ 去掉注释和print里的内容 请问如何调用外部带参数的.exe文件 界面布局问题 收藏帖--直接让客户端浏览器下载已知类型的文件 JTable怎么没addRow? 新手:如何获得一个文件夹中所以的文本文件并读写到一个txt文件中 关于ORACLE9中数据导入的问题请教!!!!!!!!!!! 问一个常用的问题? 请问怎么让Panel透明显示下层? 两台电脑连接Socket问题:java.net.ConnectException: Connection refused: connect
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
HashSet内部实现是通过HashMap实现的,因此会有个hashcode跟被存储类的对应关系的样子,所以查找类的时候,计算hashcode后就能找到对应的类,因为hashcode可能会相同,可能会找到几个类.因此找到的可能是个链表,然后通过equels判定是不是要找的同一个类.因此hashset存储元素可能需要复写equels方法.没完全看懂HashMap的的实现.不过应该是那个意思吧.
理解有误,并不是hashcode 和 equal 共同决定了对象的相等关系,决定对象的相等关系的只有 equal 方法.
hashcode只是用来做一些快速判定的,很多equal的方法实现里会用hashcode做一个快速判断,如果hashcode不相等则说明对象不同,但是hashcode相等却不能证明对象相等,还要继续判定.
hashcode另一个用处是用来做hashmap的键值哈希映射