首页 > 代码库 > 27.hashCode( )和toString( )
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的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
来自为知笔记(Wiz)
27.hashCode( )和toString( )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。