假设你想要在而不是在上推翻你将使用的物体。 这样做的理由本身是,你将获得在上放置物体的预期成果。 <代码>hashCode(,特别是对于HashSet
的正常运作至关重要, Equals>。 推翻<代码>至String(
)的主要原因是,你获得一些代表,对这个物体而言是有意义的,而不是默认的<代码>。 目标代码>方法版本。
Essentially, if you don t override the methods, HashSet
won t do what you expect. For example, say I have a class Foo
where I haven t overriden the methods.
public class Foo {
private int number;
public Foo(int newNumber) {
number = newNumber;
}
public int getNumber() {
return number;
}
}
I create two objects Foo1
and Foo2
that are equal in all respects, but I haven t overriden equals()
or hashCode()
.
Foo foo1 = new Foo(10);
Foo foo2 = new Foo(10);
Java将不认为这些是平等的,尽管我可以认为这些是平等的,因为我没有解释如何通过凌驾于<条码>上的不平等(条码>)来对其进行比较。 如果我勾画了原样的价值,我就看到分配给不同物体的不同分类值,例如:
foo1 = 1671711
foo2 = 11394033
因此,如果在<代码>HashSet上添加这些内容的话,如果我真的只想把这两个物体放在一起,那将令人高兴。
Here,是关于使用这些方法的面谈问题的类似短语。