hashCode()与toString()的使用
1.hashCode()的作用。
每个对象的hashCode是唯一不变的,一般用来判断两个对象是否一致。
2.hashCode()的实现方法
class User{
public String name;
public int age;
public User(){
System.out.println("User 的构造函数");
}
public User(String name, int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj instanceof User){
User u = (User)obj;
if(this.age == u.age && this.name.equals(u.name)){
return true;
}else{
return false;
}
}else{
return false;
}
}
public int hashCode(){
//一般不能为0,且未正数
int result = 1;
//获取User对象的hashCode的值
result = 31*result + age;
result = 31*result + name.hashCode();
return result;
}
}
import java.util.Map;
import java.util.HashMap;
class Test{
public static void main(String args[]){
User u = new User("张三", 21);
HashMap<User ,String> map = new HashMap<User, String>();
map.put(u,"abc");
//通过获取默认的hashmap值来判断是否又包含着要查找对象的hashmap值。
String s = map.get(new User("张三", 21));
System.out.println(s);
}
}
3.toString()的作用
把一个对象转换成字符串。一般是用来把类的成员变量打印出来。
4.toString()的实现方法
class User{
public String name;
public int age;
public User(){
System.out.println("User 的构造函数");
}
public User(String name, int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj instanceof User){
User u = (User)obj;
if(this.age == u.age && this.name.equals(u.name)){
return true;
}else{
return false;
}
}else{
return false;
}
}
public int hashCode(){
//一般不能为0,且未正数
int result = 1;
//获取User对象的hashCode的值
result = 31*result + age;
result = 31*result + name.hashCode();
return result;
}
public String toString(){
String result = "";
result = "age:" +age + ", name:" +name;
return result;
}
}
class Test{
public static void main(String args[]){
User u = new User("张三", 21);
System.out.println(u.toString());
}
}
5.什么是Hash算法?
有一个任意长度的二进制数据,通过hash算法,会获取到唯一的散列值。