您的位置:首页 > 编程语言 > Java开发

Java基础常问问题 一

2015-10-16 16:12 489 查看
java基础:

java对象的hashcode是怎么算的?

hashCode的常规协定是: http://www.bysocket.com/?p=263
1、在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

2、如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

3、如果根据equals方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

容器:hashmap stringbuffer

hashmap

1 hashmap的数据结构是什么?

是链表组成的数组,数组的下标是索引值,数组的每一项是链表

2 hashmap的原理是什么?

主要是添加索引,把元素按照索引分组

3 hashmap是线程安全的吗?

不是线程安全的,ConcurrentHashMap是线程安全的

4 hashmap中元素的put和get操作原理是什么?

解答:通过hash算法计算index,在index中调用equals方法比较元素的key进行get或者put。

5 hashmap和hashtable的区别是什么?

Hashmap线程不安全,hashtable线程安全。

6 对象的hashCode方法原理是什么,有什么用?

7 StringBuilder和StringBuffer有什么区别,分别是做什么的?

Hashmap的put和get方法参考:
http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E7%8E%B0/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: