关于Java中的hashCode()和equals(Object other)
来源:互联网 发布:算法 视频 严蔚敏 编辑:程序博客网 时间:2024/05/20 05:47
最近用Java写程序,发现这两个函数掌握的不好,所以专门看书研究了好久。
“contains方法被重新定义,用来快速查看是否某个元素已经出现在集中。他只在某个桶中查找元素,而不必查看集合中的所有元素。”——《Core Java》
当比较一个集合(Set)中是否含有一个对象的时候,调用contains函数,而contains函数又会调用hashCode快速缩小判断范围,然后再调用equals判断是否含有该对象。
注意:hashCode的值仅代表该对象在散列表中桶的位置,散列表用链表数组实现,每个链表都在一个相同的桶中。所以说,如果hashCode返回值之前没有,那么该对象一定不再集合中,如果hashCode返回之前存在,那再根据equals判断。
如下程序:
import java.util.HashSet;public class test {public static void main(String...arg){Node node1 = new Node(12);Node node2 = new Node(12);open.add(node1);//调用hashCode,发现之前没有,新对象open.add(node2);//调用hashCode,发现之前有,再调用equals,发现返回值一样,故判断该对像之前存在,拒绝加入Node node3 = new Node(12);System.out.println(open.contains(node3));//调用hashCode,发现之前有,再调用equals,发现返回值一样,故返回true表示存在System.out.println(node1.equals(node3));//仅仅调用equals方法}static HashSet<Node> open = new HashSet<Node>();}class Node{public Node(int a){this.a = a;}public boolean equals(Object other){System.out.println("equals");Node otherNode = (Node) other;if(this.a == otherNode.a) return true;else return false;}public int hashCode(){System.out.println("hashCode");return a;}int a = 0;}/*输出: * hashCode * hashCode * equals * hashCode * equals * true * equals * true */
- 关于Java中的hashCode()和equals(Object other)
- Java Object中的equals和hashCode
- 关于JAVA中的hashcode和equals
- 关于Object类的equals()和hashcode()
- 重写object中的hashcode和equals方法
- object类中的equals和hashcode方法
- java中的equals和hashCode
- Java中的hashCode()和equals()
- java中的equals和hashCode
- Java中的equals()和hashCode()
- Java中的equals和hashCode
- Java中的hashCode()和equals()
- Java中的hashCode()和equals()
- Java中的equals和hashCode
- Java中的equals和hashCode
- java中的equals( )和hashcode( )
- Java中的hashcode 和 equals
- Java Object equals() & hashCode()
- C语言的变参技术,va_start,va_arg,va_end这几个函数怎么用?
- linux sed 使用详解
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
- NYOJ - 苹果(dp-01背包问题)
- Python学习笔记之一 文本文件的创建与显示
- 关于Java中的hashCode()和equals(Object other)
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
- ArrayList 二维数组
- android 中文乱码总结
- 攻击防范(一)
- linux命令输出信息提取
- 年龄问题
- jquery的图片的切换
- O/X Mapping 的故事续集的续集