hashcode()是Obeject的一个方法。每个子类都有,应该是很重要的一个方法,那么hashcode()到底是什么东西,干什么用的。hashMap,hashTable什么区别面试常题,实际很少遇到。到底在生产中什么情况会需要考虑到这两者的区别。请大神们指点。
------解决思路----------------------
1.百度可以搜索一下hashcode,这儿我就不贴了,判断两个对象(内容)是否相同,最先比较是否同一对象(直接用==),再比较hashCode,再调用equals方法
2.所有以Hash开头的类都跟hashCode有关,jdk自带的还有HashSet,平常用HashMap存储的时候,key很多是String或者Integer等jdk自带的类,这些类的hashCode()和equals()方法都已经重写好了,所以你在日常中没太注意,其实你要用自定义的类作为key,那必须重写hashCode方法和equals方法,因为Object类的hashCode方法是个native方法,其值一般是对象的内存地址(不太准确),如果不重写这两个方法,那么放进去之后你就别想通过key找了
3.HashMap不是线程安全的,Hashtable是线程安全的,有空多研究一下jdk的集合的源码,不明白的点直接baidu或google
------解决思路----------------------
hashcode()到底是什么东西 :::其实是一串数字(对象的内存地址),就是指针了。。
主要用来比对俩个对象是不是同一个。。
HashMap不是线程安全的,Hashtable是线程安全的