Comparar ArrayList de Java y conocimientos básicos de LinkedList

Un concepto básico:
Primer vistazo a estos dos tipos de interfaz Lista implementos, e interfaces Lista para lograr un total de tres categorías, a saber ArrayList, Vector y LinkedList. Lista para almacenar una pluralidad de elementos, es posible mantener el orden de los elementos, y los elementos permitiendo que repetirse. distinción de clases aplicación concreta relacionada 3 de la siguiente manera:

(1) Memoria
ArrayList y Vector: es el orden del elemento de almacenamiento, la eliminación de un elemento, después de que se ha completado la operación, los elementos necesarios para cambiar parte, 10 es la capacidad inicial predeterminada.

ArrayList y se implementan las matrices basadas en vectores, la implementación LinkedList se basa en una lista doblemente enlazada (que contiene el nodo de cabeza).

(2) hilo de seguridad
ArrayList **** no tiene ningún hilo de seguridad , en un entorno de una sola rosca, la LinkedList es seguro hilo , si se utilizan en un entorno concurrente, puede ser C ollections clase estática Método synchronizedList () para ArrayList y LinkedList puede ser llamado.
La explicación de la API:

synchronizedList
public static <T> List<T> synchronizedList(List<T> list)返回指定列表支持的同步(线程安全的)列表。为了保证按顺序访问,必须通过返回的列表完成所有对底层实现列表的访问。
在返回的列表上进行迭代时,用户必须手工在返回的列表上进行同步: 

  List list = Collections.synchronizedList(new ArrayList());
      ...
  synchronized(list) {
      Iterator i = list.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }
 不遵从此建议将导致无法确定的行为。 
如果指定列表是可序列化的,则返回的列表也将是可序列化的。 
参数:
list - 被“包装”在同步列表中的列表。 
返回:
指定列表的同步视图。

Vector lograr thread-safe , la mayoría de los métodos que contiene la palabra clave sincronizada, pero la eficiencia no es ArraykList Vector y LinkedList alta.

(3) el mecanismo de expansión
desde el interior en términos de mecanismo de aplicación, la ArrayList y vectores se utiliza en forma de una matriz para almacenar , cuando la adición de elementos a ambos tipos de tiempo, si la capacidad no es suficiente, la necesidad de expansión. ArrayList capacidad después de la expansión antes de que las 1,5 veces , y luego copiar los datos a la nueva matriz antes de ir. Y Vector capacidad por defecto después de la expansión de la caja 2 antes del pliegue .

Vector capacidad incrementales puede ser proporcionado, pero no ArrayList . En Vector, hay capacityIncrement: cuando el tamaño de su gran capacidad, la capacidad se incrementa automáticamente cantidad. Si la hora de crear Vector, especifica el tamaño de capacityIncrement, Vector la necesidad de aumentar la capacidad en una matriz dinámica, si el aumento de volumen es mayor que 0, el aumento en el tamaño capacityIncrement, si el incremento es menor que 0, el aumento de la anterior 2 veces.

Debería decir algo en una matriz de longitud variable de principios: Cuando el número de elementos es superior a la longitud de la matriz, producirá una nueva matriz, copiar el arreglo de datos original en una nueva matriz y, a continuación, añadir nuevos elementos a la nueva matriz.

(4) la eficiencia CRUD
ArrayList y Vector, la recuperación de un objeto desde una ubicación especificada, o el extremo de la inserción de colección, eliminar un elemento de tiempo es el mismo, la complejidad de tiempo es O (1). Pero si se añaden o quitan elementos de tiempo gastado en otro lugar es O (n), LinkedList, al insertar, eliminar cualquier posición de tiempo que toma los elementos son los mismos, toda la complejidad del tiempo es O (1), pero él en una complejidad de tiempo de elemento de recuperación es O (n).

Así que si sólo para encontrar una ubicación específica de los elementos de elementos o moverse sólo aumentará al final del set, y luego usar un ArrayList o vector es el mismo. Si se inserta en la ubicación especificada, elementos de borrado, la mejor opción ListaEnlazada

II resume las diferencias:
(1) sobre la diferencia entre ArrayList y Vector de la siguiente manera:
①: expansión de memoria bajo predeterminado ArrayList es 50% + 1, Vector es la extensión predeterminada 1 veces.
②: Vector ofrece indexOf (obj, interfaces de inicio), ArrayList no.
③: Vector pertenecen nivel de seguridad de los subprocesos, pero no use vector mayoría de los casos, debido a la necesidad de una mayor sobrecarga de hilo de seguridad.

(2) la diferencia entre ArrayList y LinkedList como sigue:
1. Para conocer los términos de ArrayList y LinkedList, añadir un elemento al final de la lista se gastan en costos fijos. Para ArrayList, el incremento principal en una matriz interna, apuntando a los elementos añadidos, en ocasiones puede conducir a volver a asignar la matriz, mientras que LinkedList se refiere, esta sobrecarga es un unificado, asignar un objeto de entrada interna.
2. Inserción o eliminación de un elemento en el medio de los medios de ArrayList que los elementos restantes en la lista se pueden mover, y la inserción o eliminación de un elemento en el medio de coste LinkedList es fijo.
3. LinkedList no soporta elementos de acceso aleatorio eficientes.
4. Desperdicio de espacio ArrayList se refleja principalmente en la lista al final de la lista para reservar un determinado volumen de espacio y el espacio que ocupa LinkedList se refleja en cada elemento necesidades de consumir espacio considerable

Cuando la operación es agregar los datos detrás de una columna de datos, en lugar de en la parte delantera o en el medio y requiere acceso aleatorio a sus elementos al utilizar ArrayList proporcionará un mejor rendimiento, cuando se añaden a sus operaciones en la parte delantera o en medio de un conjunto de datos o cuando se eliminan los datos y el acceso a sus elementos en el orden, se debe utilizar un LinkedList.

Así que, aunque sólo sea para encontrar elementos de un lugar determinado o sólo al final del conjunto aumenta, elementos de eliminar, a continuación, utilizar el vector o puede ser ArrayList. Si la inserción de otra ubicación especificada, operación de borrado, la mejor opción LinkedList.

Publicado 99 artículos originales · ganado elogios 2 · Vistas 2612

Supongo que te gusta

Origin blog.csdn.net/weixin_41588751/article/details/105251433
Recomendado
Clasificación