java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

java中的每个对象都有一个唯一的hashcode与它对应,就跟一个地址一样。两个相同的字符串hashcode值也是一样。

在程序中,我们碰到了需要判断名字变种是否相等的问题。比如abc型的有许多的形式,abc,bc a等。我们最后采用的判断它们相等的方法是:(abc+bca).hashcode.

map判断其中的元素相等,需要首先调用hashcode() 方法,然后调用equals方法。

改造的author中的hashcode方法:

public int hashCode() {
		if(nameValue!=0)
		{
			return nameValue;
		}
		final int prime = 31;
		int result = 1;
		//String str= PinyinUtils.getFirstCharOfName(name);
		if(this.firstCharOfName.length()==3)
		{
			if(name==null)
				result=prime*result;
			else
			{
				 result = prime * result +this.firstCharOfName.hashCode()
						 +this.shortName1.hashCode()
						 +this.shortName2.hashCode();
			}
		}
		else if(this.firstCharOfName.length()==2)
		{
			if(name==null)
				result=prime*result;
			else
			{
				 result = prime * result +this.firstCharOfName.hashCode()
						 +this.shortName1.hashCode();
			}			
		}
		else if(this.firstCharOfName.length()==4)
		{
			if(name==null)
				result=prime*result;
			else
			{
				 result = prime * result +this.firstCharOfName.hashCode()
						 +this.shortName1.hashCode();
			}	
		}
		result=result*961;
		nameValue=result;
		return result;
	}

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。