hashcode
Posted bnbqian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashcode相关的知识,希望对你有一定的参考价值。
在定义新类时,一个非常常见的疏忽是不为 equals()
和 hashCode()
方法编写适当的重写方法。
HashSet
和 HashMap
在许多操作中使用这些方法,如果它们没有被正确覆盖,那么它们可能成为潜在的内存泄漏问题的来源。
让我们以一个简单的 Person
类为例, 并将其用作 HashMap中
的键 :
public class Person
public String name;
public Person(String name)
this.name = name;
在这种情况下,下面的断言将会是true:
让我们看一下正确的实现了 equals()
和 hashCode()
的 Person
类:
但是,**如果我们正确地重写了 equals()
和 hashCode()
方法,那么在这个 Map中
只会存在一个 Person
对象。
但是
这里我们使用Person作为关键。由于 Map
不允许重复键,因此我们作为键插入的众多重复 Person
对象不应增加内存。
请记住,Map不能包含重复的键:
现在我们将重复的Person对象插入到使用此键的Map中。
以上是关于hashcode的主要内容,如果未能解决你的问题,请参考以下文章