27.hashCode( )和toString( )
- 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的hashCodepublicint 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的hashCodepublicint 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

浙公网安备 33010602011771号