Java常见面试题Hashmap的结构,jdk1.7和jdk1.8有哪些区别
其他
2021-02-28 21:28:03
阅读次数: 0
- Hashmap的结构,jdk1.7和jdk1.8有哪些区别
- 存储结构
jdk1.7:数组,单链表
jdk1.8:数组,单链表,红黑树
- 转移数据方式
jdk1.7:链表头插,先扩容再插入(put)数据
jdk1.8:链表尾插,先插入(put)数据再扩容,当链表节点大于8的时候,会变成红黑树结构。如果节点又少于6的时候,会变成链表结构。因为链表太长查询数据会很慢,所以使用红黑树结构。
数组查询效率快,链表插入,修改效率快。
- ArrayList和Linkedist的区别
- ArrayList:底层数组结构,原理:数据复制。自动扩容数组,每次扩容上次的1/2.原基础的1.5倍。
利用index按顺序存储,查询效率高。
- Linkedist:底层链表结构,善于插入,删除数据。
总结ArrayList更适合读取数据,Linkedist善于插入删除数据。
- String,StringBuffer,StringBuilder的区别
- 可变不可变
String字符串是常量,在修改时不会改变自身。会重新创建一个字符串对象。
StringBuffer,StriingBuilder:在修改时会改变对象自身,每次操作都是对对象本身进行修改,并不会生成新的对象。
- 线程是否安全
String:对象定义后不可变,线程安全。
StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串。
StringBuilder:是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。
转载自blog.csdn.net/yang13676084606/article/details/110588379