属性不存在对应的int类型数据如何解决?
【现状】
实体类不存在任何一个int类型数据,不存在唯一性数据;需要通过成员变量来完成组合操作获取哈希值;
(也就是哈希值的计算需要每一个成员变量来进行组合生成)
class Member {
//成员变量
private String name;
private Integer age;
//成员方法
public void setName(String name){
this.name = name;
}
//构造方法
public Member(){}
//构造方法 有参
public Member(String name){
this.name = name;
}
//重写equals() 方法 与 hashCode() 方法
//使用快捷键自动生成
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Member member = (Member) o;
return age == member.age &&
name.equals(member.name);
}
//重写hashCode() 方法
//使用快捷键自动生成
// 哈希值的产生需要使用成员变量的组合生成 name + age
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
【方法】
介绍 Objects.hash();方法
public static int hash(Object... values) {
return Arrays.hashCode(values);
}
<1>
Object...
当前方法所需数据类型为Object,也就是说,支持任何数据类型;
<2>这里的参数Object... values
是一个数组类型参数;
<3>...
表示这个数据类型参数个数不做任何限制,任意长度,可以没有参数,也可以多个参数;
指定的数据转换之后得到一个唯一性的哈希值;