1.List 和 Set,Map 的区别:
List 以索引来存取元素,有序的,元素是允许重复的,可以插入多个null。
Set 不能存放重复元素,无序的,只允许一个null
Map 保存键值对映射,键唯一,值可以重复
List 有基于数组、链表实现两种方式
Set、Map 容器有基于哈希存储和红黑树两种方式实现
Set 基于 Map 实现,Set 里的元素值就是 Map的键值
2.HashMap,HashTable的共同点和区别:
HashMap:
底层由链表+数组+红黑树实现
可以存储null键和null值
线性不安全
初始容量为16,扩容每次都是2的n次幂
HashMap是对Map接口的实现
HashTable
HashTable的底层也是由链表+数组+红黑树实现。
无论key还是value都不能为null
它是线性安全的,使用了synchronized关键字。
HashTable实现了Map接口和Dictionary抽象类
Hashtable初始容量为11
3.ArrayList 和 Vector 的区别是什么?
Vector是线程安全的,ArrayList不是线程安全的。
ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。
Vector只要是关键性的操作,方法前面都加了synchronized关键字,来保证线程的安全性
4.Arraylist与LinkedList区别:
ArrayList是数组的数据结构,LinkedList是链表的数据结构。
插入、删除数据时,LinkedList的效率比较高,因为ArrayList要移动数据,ArrayList适用于遍历、查找。
LinkedList比ArrayList开销更大,因为LinkedList的节点除了存储数据,还需要存储引用。