ArrayList:查询快,增删改慢,线程不安全,底层由Array(数组)实现,刚创建未添加数据时,初始容量为0,当已知需要存储大量数据时,可以调用带参构造指定容量;
在第一次添加数据,初始容量赋值为10,当数据达到容量时,根据当前容量扩容1.5倍;数组在内存中是一段连续的内存,可以直接根据索引快速找到目标元素,当在数组前面或中间增删改时,需要其他元素的位置,导致效率较低。
LinkedList:增删改快,查询慢,线程不安全,底层由Linked(链表)实现,链表在内存中是指向随机分布的地址,查询时需要从第一位或者最后一位开始一个个往下查询,效率较低,增删改时只需要在指定位置修改前后两个节点的指针域指向,速度较快。
Vector:功能和实现与ArrayList相似,初始容量为10;
外部可操作方法基本全部用synchronized修饰,线程安全,效率极慢,不推荐使用;
总结:已知查询较多用ArrayList,增删改较多用LinkedList,多线程为保证线程安全建议自行使用synchronized处理