50、说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别
- ArrayList,Vector:底层都是以数组方式存储,增删慢,查改快
ArrayList: 初始化容量:10,线程不安全,速度快 synchronizedList
扩容方法: oldCapacity + (oldCapacity >> 1); 1.5倍
Vector: 初始化容量:10,线程安全,速度慢;扩容方法:n*3/2+1
int newCapacity = oldCapacity + ((capacityIncrement > 0) ?capacityIncrement : oldCapacity); 2倍
数组
1.每一个元素的空间大小一样,内存地址存储是联系的状态
2.
3.底层有个数学表达式(算法)
数组特点:为了保证连续空间,要在内存中找到一块连续的空间,是很难的 数组是无法存储大数据的
数组的特点:
1、在添加删除的时候要频繁的移动内存 所以添加删除速度慢
2、数组有索引,可以直接通过索引来查询数据 所以查询速度快
LinkedList:底层以双向链表方式存储;查改慢,增删快 内存因为链表在内存中是串不可连续的空间,所以查询慢
因为链表在添加或删除数据的时候,不需要移动内存空间,所以添加或删
除速度快;HashSet(无序不可重复的):底层是一个HashMap
2.HashMap:初始化容量:16,加载因子0.75,是以单向链表加数组的结构存储的 是线程不安全,速度快;
Hashtable:线程安全,速度慢
两个都实现了Map接口
SortedMap
TreeMap