我有一个类定义如下:
public class Person {
private String name;
// constructor and getter/setter omitted
}
Run Code Online (Sandbox Code Playgroud)
我试图打印我的班级实例:
System.out.println(myPerson);
Run Code Online (Sandbox Code Playgroud)
但我得到了以下输出:com.foo.Person@2f92e0f4.
当我尝试打印一个Person对象数组时发生了类似的事情:
Person[] people = //...
System.out.println(people);
Run Code Online (Sandbox Code Playgroud)
我得到了输出: [Lcom.foo.Person;@28a418fc
这个输出是什么意思?如何更改此输出以使其包含我的人名?我如何打印我的对象集合?
注意:这是关于此主题的规范问答.
当我们有equals(),compareTo()方法为什么hashcode()在Java中有一个方法?
如果我们使用 HashTable我们必须覆盖hashcode()方法,除快速访问随机密钥有什么特殊原因吗?如果我们覆盖该hashcode()方法,可能的实现是什么?
Java如何确保内存中的对象唯一性?
Hashcodes are typically used to enhance the performance of large collections of data.
在hashing我们计算hash code.这是一项额外的任务.当我们为添加到集合的每个对象执行其他操作时.性能如何提高?
有人可以解释为什么java人会覆盖hascodein 的目的Optional
执行equals()并hashCode()应遵循这些规则。
o1.equals(o2),o1.hashCode() == o2.hashCode()则应始终为真。o1.hashCode() == o2.hashCode()是真的,这并不意味着那o1.equals(o2)将是真的。如果o1.hashCode() == o2.hashCode()是真的。我知道,如果两个对象相等,那么这两个对象应该返回相同的哈希码。如果两个对象的哈希码相同,为什么不是这样o1.equals(o2)?