1.创建不可变对象,即不在对象中设置set等方法即可
2.往map中push数据的时候,它的hashcode是会改变的
3.当然可以使用任何对象作为键,只要它遵守了equals()和hashCode()方法的定义规则,并且当对象插入到Map中之后将不会再改变了。
4.hashcode相同的数据,是放到链表的上一个节点还是下一个节点
5.默认长度为16
6.多线程情况
8.hashmap和hashtable的比较
- hashmap可以接受null的键值和null的value
- hashmap是非synchronized,也就是异步的。
9.为什么String,Integer适合做key
- 不可变
- final
- 重写了equals和hashcode方法
10.普通类也可以作为key,但前提是hashcode在存入和取出的时候必须相同。减少hash碰撞,来提高map的性能
- 最简单的方法是,这个对象创建好后不能改变,那么它的hash值也不会改变
11.ConcurrentHashMap比hashtable性能好,但hashtable线程更为安全
12.通过hashcode来找到bucket位置来储存entry对象
网友评论