ArrayList
底层数据结构是是数组,查询快,增删慢
线程不安全,效率高
Vector
底层数据结构是数组,查询快,增删慢
ArrayList和Vector增删慢是因为增删数组内的元素要涉及数组元素移动等内存操作,查询快是因为数组允许直接按序号查询元素
LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
LinkedList查询慢是因为双向链表查询数据需要进行前向或后向遍历,增删快是因为增删只需要记录本项的前后项即可
线程安全是因为使用了synchronized方法
为什么线程安全,效率低;
为什么线程不安全效率高呢?
线程的安全是以牺牲效率为代价的,所谓线程安全就是多了个加锁、解锁的操作,比如100亿个操作中都要加锁和解锁,线程是安全了,但效率就下降了。而有些软件是以效率为主的,为了提高效率,就少了加锁,解锁的操作,虽然容易出现并发访问问题,但效率却提高了。