优秀的编程知识分享平台

网站首页 > 技术文章 正文

对比Vector、ArrayList、LinkedList有何区别?

nanyue 2024-08-12 22:28:07 技术文章 10 ℃

对比Vector、ArrayList、LinkedList有何区别?

  • Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以双向链表的形式进行存储。
  • List中的元素有序、允许有重复的元素,Set中的元素无序、不允许有重复元素。

有序或无序是指是否按照其添加的顺序来存储对象。List 是按照元素的添加顺序来存储的。而 Set 的实现类都有一套自己的排序算法,每添加一个元素,都会按照其内部算法将元素添加到合适的位置,所以不能保证内部存储是按元素添加的顺序而存储的。

  • Vector线程同步,ArrayList、LinkedList线程不同步。
  • LinkedList适合指定位置插入、删除操作,不适合查找;ArrayList、Vector适合查找,不适合指定位置的插入、删除操作。
  • ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList更节省空间。

LinkedList 内部静态类 Node,也就是List 中节点类型:

private static class Node<E> {

E item;

Node<E> next;

Node<E> prev;

Node(Node<E> prev, E element, Node<E> next) {

this.item = element;

this.next = next;

this.prev = prev;

}

}

ArrayList:值可以为null,线程不安全,但是我们可以使用Collections.synchronzedList()方法使得一个ArrayList支持并发。

List<Integer> mySynchronziedArrayList = Collections.synchronizedList(new ArrayList<Integer>());

Vector:本身支持并发。

LinkedList:值可以为null,但是当我们调用时会抛出NullPointerException异常。

最近发表
标签列表