- hashCode( )的作用
- 什么是Hash算法
- 根据输入的数据,得到散列值,并且散列值对于输入数据来说是唯一的
- Hash算法的特点
- 存储数据
- hashCode( )的实现方法
- 所有类都拥有hashCode( )方法,无参数,返回值是一个整型
- hashCode( )复写的原则:如果两个对象用equals相比是相等的话,那么这两个对象调用hashCode所返回的hash值也应该是相等的
classUser{
String name;
int age;
publicUser(){
}
publicUser(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this== obj){
returntrue;
}
//instanceof作用:判断前面的对象是不是后面对象的类型
boolean b = obj instanceof User;
if(b){
//obj向下转型为User对象
User u =(User)obj;
if(this.age == u.age &&this.name.equals(u.name)){
returntrue;
}
else{
returnfalse;
}
}
else{
returnfalse;
}
}
//复写User的hashCode
publicint hashCode(){
int result =17;
result =31* result + age;
result =31* result +name.hashCode();
return result;
}
}
import java.util.*;
publicclassTest{
publicstaticvoid main(String args []){
User u =newUser("zhangsan",12);
HashMap<User,String>map=newHashMap<User,String>();
map.put(u,"abc");
//通过计算键的hashcode来判断有没有存在相应的值
String s =map.get(newUser("zhangsan",12));
System.out.println(s);
}
}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
abc
- toString( )的作用
- 所有的类当中都拥有toStrng( )方法
- 作用:无论什么类型的对象,都把他转换成一个String字符串,使对象的可读性更强
- toString( )的实现方法
classUser{
String name;
int age;
publicUser(){
}
publicUser(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this== obj){
returntrue;
}
//instanceof作用:判断前面的对象是不是后面对象的类型
boolean b = obj instanceof User;
if(b){
//obj向下转型为User对象
User u =(User)obj;
if(this.age == u.age &&this.name.equals(u.name)){
returntrue;
}
else{
returnfalse;
}
}
else{
returnfalse;
}
}
//复写User的hashCode
publicint hashCode(){
int result =17;
result =31* result + age;
result =31* result +name.hashCode();
return result;
}
publicString toString(){
String result ="age:"+age+","+"name:"+ name;
return result;
}
}
import java.util.*;
publicclassTest{
publicstaticvoid main(String args []){
User u =newUser("zhangsan",12);
System.out.println(u);
}
}
结果:
D:\work\src>javac *.java
D:\work\src>java Test
age:12,name:zhangsan
时间: 2024-10-24 11:34:04