快捷搜索:  汽车  科技

array和vector有什么不同?对比VectorArrayListLinkedList有何区别

array和vector有什么不同?对比VectorArrayListLinkedList有何区别this.next = next; this.item = element; Node<E> next; Node<E> prev; Node(Node<E> prev E element Node<E> next) {

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

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

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

array和vector有什么不同?对比VectorArrayListLinkedList有何区别(1)

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;

}

}

array和vector有什么不同?对比VectorArrayListLinkedList有何区别(2)

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

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

Vector:本身支持并发。

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

array和vector有什么不同?对比VectorArrayListLinkedList有何区别(3)

猜您喜欢: