1.list set 区别:
都继承于Collection接口
1)是否有序 是否可重复
list:有序的 可重复的
set:无序的 不可重复的
2)null元素
list :可以插入多个null元素
set:只允许插入一个null元素
2.list map区别
1)list :对象集合 允许对象重复
2)map:键值对集合 不允许key重复
3.ArrayList LinkedList Vector
1)底层
Arraylist:数组
LinkedList:链表
Vector:数组
2)增删改查效率
ArrayList:查找和添加的效率高 插入和删除效率低
LinkedList:查找和添加的效率低 插入和删除的效率高
Vector:查找和添加的效率高 插入和删除的效率低
3)线程安全性
ArrayList:线程不安全的
LinkedList:线程不安全
Vector:线程安全的
4)扩容机制
ArrayList:底层采用数组形式存储数据 在创建集合的时候默认创建数组为0 在第一次添加元素的时候 创建长度为10的数组 当数组长度不够时 进行扩容 扩容为原来的1.5倍
LinkedList:底层采用链表形式存储数据 双向链表
Vector:底层采用数组存储 在创建Vector集合时 创建了一个长度为10的数组 当数组长度不够时 进行扩容 扩容为原来的2倍
HashMap:键不可以重复 值可以重复 底层是哈希表 线程不安全 允许key为null value也可以null
HashTable:键不可以重复 值可以重复 底层是哈希表 线程安全 key value都不可以为null