依然想用最简单的阐述让你明白,所以避免不了一点差错,开兑:
话说咱有一个数数组 int[] num = new int[100];
现在咱就像往里面存数据,但不允许重复。~~ 你会怎么办? 每次存入数据的时候都 遍历一遍数组 检查重复不? 这就100个,不是个事,要我的数组是100000000长
效率可想而知。
咱们自己可以设计一个算法,咱起个名字就叫 hasNO()(没有,o(∩_∩)o 哈哈我的英语真的很湿)
这个算法干嘛用呢?~ 就是 假如咱第一个存的是 101, 咱来个 index = 101%100=1 就是取101对100的余数,咱就把101存在num[1]中,下一次若再要存个101,一个取余数,直接就去与num[1] 比较,相等了就不存,不想等了就存,这样是否就提高效率了呢?
当然 咱要是存1 取余数 还是1 与num[1]比较后不想等,咱咋办呢? 咱可以在这个时候追加另一种算法~~~~~~~~~~
实际的hashcode 比这个要复杂的多了,你有兴趣可以研究一下。
通过上面的山寨方法 咱们可以得出一个概念:
相等的对象 必有相等的 hashcode
有相等hashcode 的两个对象 并不一定相等
好了,希望我的山寨方法 对楼主理解问题 有所帮助! |