hashCode方法
程序员文章站
2022-03-15 21:04:27
...
简单测试了一下结果如下
1.hashCode码由内容决定的
2.需要组合多个散列值时可以使用Objects.hash()这种方法
3.数组可以使用Arrays.hashCode()方法
理解可能不到位以上待补充
代码如下
package Date_11_9;
public class testHashCode {
public static void main(String args[]){
String s = "OK";
StringBuilder sb = new StringBuilder("s");
System.out.println(s.hashCode() + " " + sb.hashCode());
String t = new String("OK");
StringBuilder tb = new StringBuilder("s");
System.out.println(t.hashCode() + " " + tb.hashCode());
String a = "a";
String b = "a";
System.out.println(a.hashCode());
System.out.println(b.hashCode());
/*
* 通过输出发现字符串s 和字符串t 的hashCode码是一致的,这是因为字符串的散列码是由内容决定的
* 内容一致,散列码也是一致的
*
* 但是在StringBuilder中两个对象的内容一致但是hashCode不一致
* 这是因为在StringBuilder中没有定义hashCode方法,
* 它的hashCode码是由Object类的默认的hashCode方法导出的对象的存储地址
* */
testhashcode1 test = new testhashcode1("钟镜清",20);
System.out.println(test.hashCode());
int[] i = new int[3];
int[] n = i;
System.out.println(i.hashCode() + " " + n.hashCode());
System.out.println(i.equals(n));
}
}
package Date_11_9;
import java.util.Objects;
class testhashcode1{
String name;
int age;
public testhashcode1(String name, int age){
this.name = name;
this.age = age;
}
@Override
public int hashCode(){
return Objects.hash(name,age); //需要组合多个散列值时可以使用这种方法
}
}
上一篇: 基础算法题-树相关
下一篇: 一种人脸识别系统与识别方法