Collection的类继承图
ArrayList、LinkedList与Vector的对比
从图中可以看到这三个集合都实现了List接口,所有使用方式都很相同,区别在于因为实现的方式不同,所以对不同的操作有不同的效率
ArrayList 和Vector底层是采用数组方式存储数据,它们本质上是一个可以改变大小的数组。Vector由于使用了synchronized方法(线程安全),所以性能上比ArrayList要差,如果你的程序本身是线程安全的(没有多个线程之间共享同一个对象/集合),这时使用ArrayList是一个更好的选择。LinkedList使用双向链表实现存储,在添加和删除元素的时候具有更好的性能,但是随机存取比较慢。
LinkList和ArrayList在添加元素时会申请比元素本身更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%。
LinkedList还实现了Queue接口,因此提供了更多的方法。
对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。 在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
LinkedList、ArrayList、Vector对比
最新推荐文章于 2023-12-11 21:46:04 发布