![a8c8b2c0526c9a1bf2bc434cd724dd6c.png](https://img-blog.csdnimg.cn/img_convert/a8c8b2c0526c9a1bf2bc434cd724dd6c.png)
【012】
1. Vector用法和ArrayList区别
(1) Vector的特有方法有哪些?
- 添加元素:addElement()
- 删除元素:removeElement()
(2) Vector与ArrayList的区别是什么?
他们的底层数据结构相同,都是Object类型的数组
- Vector的add()方法是同步方法,ArrayList的add()方法是非同步方法
- Vector扩容每次扩容一倍,ArrayList每次扩容0.5倍
- Vector是在调用构造方法时,直接初始化容量为10,ArrayList是在第一次调用添加方法时初始化容量为10.
- Vector的版本是JDK1.0,ArrayList,JDK1.2版
- Vector是线程同步的,安全性高,效率低,ArrayList是线程非同步的,安全性低,效率高
2. Map接口_HashMap_Hashtable的用法详解
(1) Map接口常用的方法有哪些?
![e3a00c3243b315ea07fff50774220b2c.png](https://img-blog.csdnimg.cn/img_convert/e3a00c3243b315ea07fff50774220b2c.png)
(1) HashMap与Hashtable的异同是什么?
- 版本不同:HashMap JDK1.2 HashTable1.0
- HashMap继承了AbstractMap,实现了Map接口,Hashtable继承了Dictionary实现了Map接口
- HashMap允许null值和null键,但是null作为key只允许一个,Hashtable则是非null的键和值
- HashMap是线程不同步的(效率高,安全性低)Hashtable(效率低,安全性高)线程同步
1. HashMap的底层原理
(1) HashMap的底层数据结构是什么?
数组加链表组成的散列表
(2) 简述哈希表的去重原理?
- 计算Integer类型对象的hashCode值
- 根据y=k(x)函数,计算存储位置,x是hashCode值,y是存储位置
- 如果该位置上有元素,需要调用equals方法比较元素而内容是否相通,如果不相同,使用链表链接,如果相同则不添加
- JDK1.8之后,当链表的个数>=8时,就会将链表转为红黑树,目的是为了减少查询比较的次数
1. 二叉树和红黑树
(1) 简述树的概念和特征?
- 树是由一个集合中的元素称为树的节点,所定义的关系称为父子关系
- 父子关系在树的节点之间建立了一个层次结构
- 树的节点包含一个数据元素及若干指向其子树的若干分支
- 在这种层次结构中有一个节点