一、区别
Vector:线程安全,动态数组。
ArrayList:动态数组,线程不安全,应用广泛。
LinkedList:双向链表,线程不安全。
二、不同容器类型适合的场景
Vector和ArrayList作为动态数组,其顺序存储非常适合随机访问。但是删除和插入操作相对较差。
LinkedList进行插入和删除非常高效,但其随机访问相对较慢。
三、Collection
List:提供方便的访问、插入、删除等。
Set:不允许重复。
Queue/Dequeue:除了集合的基本功能,还支持FIFO与LIFO等特定行为。
四、Set
TreeSet:自然顺序访问,但添加、删除、包含等操作相对低效,有序。
HashSet:如果哈希散列正常,可以提供常数时间的添加、删除、包含等操作,不保证有序。性能受自身容量的影响。
LinkedHashSet:保证了常数时间的添加、删除、包含等操作,性能低于HashSet,因为维护链表的开销。