用Java创建的对象存储在堆中,并使用散列搜索来加速搜索。
基本思想:定义映射对象所在存储器地址的密钥
如果需要查找对象,则只需查找键,然后遍历整个堆内存,查找对象publicclassCat{
私有字符串名称;
私有增量;
专用权限;
私有颜色;
公共cat (string name,intage,doubleweight,Colorcolor ) {
this.name=name;
this.age=age;
this.weight=weight;
this.color=color;
}
通过//属性判断Cat是否相同
@Override
publicbooleanequals(objectobj ) {
if(this==obj )//如果两个Cat是同一对象,则相同
返回真;
}
if(obj==null ()//如果两个Cat中的任何一个为空,则不同
返回假;
}
//两个Cat的类型不同就不同
获取类!=obj.getClass () ) }
返回假;
}
catcat=(cat ) obj;
//比较属性
returnname.equals(cat.name ) (age==cat.age ) )。
(weight==cat.weight ((color.equals ) ) cat.color );
}
//hashCode ()方法也必须写
公共int hashcode (
return7*name.hashCode () 11 * new integer (age ).hashCode ) ) )。
13*newdouble(weight ).hashCode ) 17*color.hashCode );
}
@Override
公共字符串
return'Cat[name=' name ',age=' age ',weight=' weight
',color=' color '] ";
}
}
测试: publicstaticvoidmain (string [ ] args )。
catcat1=Newcat(Java,12,21,Color.BLACK );
catcat2=newcat('c ',12,21,Color.WHITE );
catcat3=Newcat(Java,12,21,Color.BLACK );
system.out.println(cat1号散列代码cat1.hashCode ) );
system.out.println(cat2号的哈希代码) cat2.hashCode ) );
system.out.println(cat3号散列代码cat3.hashCode ) );
system.out.println(cat1是否与Cat2相同) cat1. equals (cat2);
system.out.println(cat1是否与Cat3相同(cat1.equals ) Cat3) );
}
结果如下。