¿Cuáles son las diferencias fundamentales entre los dos objetos? ¿Es uno más eficiente? ¿Tiene uno más métodos?¿Qué es una lista frente a una lista de arreglos?
Respuesta
La lista está en la interfaz mientras ArrayList es una clase.
por ejemplo, no se puede usar esta configuración:
List<String> list = new List<String>();
... Debido a que es una interfaz.
Sin embargo, esto funciona:
ArrayList<String> arrayList = new ArrayList<String>();
también ... Se puede hacer como duffymo dice a continuación, que es más o menos lo mismo que implementar la interfaz List
(hacer su propia implementación de la lista).
No, pero puede hacer esto: List
A List
define la interfaz que usa ArrayList
, que le permite implementar métodos que permitirán que todas las demás clases que implementen List se utilicen juntas o de forma similar. Un ArrayList
siempre es también un List
, pero un List
no es necesariamente un ArrayList
.
Es decir, ArrayList
implementa List
(entre algunas otras interfaces).
La lista es una interfaz; ArrayList es una clase que implementa la interfaz de lista.
Las interfaces definen las firmas de método que se requieren, pero no dicen nada sobre cómo se implementan.
Las clases que implementan una interfaz prometen proporcionar implementaciones públicas de métodos con las firmas idénticas declaradas por la interfaz.
De acuerdo con java docs, List es solo una interfaz, y ArrayList es una de las clases que lo implementan. No existe una ventaja de eficiencia inherente al uso de ArralyList específicamente en lugar de referencias de tipo lista a un objeto ArrayList.
Sin embargo, cuando se trata de "eficiencia", puede haber una diferencia entre las diferentes implementaciones de la interfaz de la Lista. Por ejemplo, puede haber una pequeña diferencia de eficiencia entre LinkedList y ArrayList, dependiendo de cómo los esté usando.
Para citar el docs java en la página ArrayList,
La operación de adición se ejecuta en tiempo constante amortizado, es decir, la adición de n elementos requiere tiempo O (n). Todas las demás operaciones se ejecutan en tiempo lineal (aproximadamente hablando). El factor constante es bajo comparado con el de la implementación LinkedList.
En otras palabras, la diferencia en el rendimiento probablemente será insignificante, pero es posible que vea algunas ventajas al utilizar un ArrayList (en lugar de una lista vinculada).
En caso de que le interese, ArrayList se implementa con una matriz que se redimensiona de vez en cuando (muy probablemente cada vez que la colección se duplica), lo cual es bastante diferente de la implementación de una LinkedList (ver wikipedia para más detalles)
Él no es. Él está preguntando cuándo debería usar List y cuándo debería usar ArrayList. LinkedList no entra - como todas las respuestas anteriores pudieron haber indicado. LinkedList es una dirección equivocada para esta pregunta en particular. – RichieHH
Considérese una línea como la siguiente:
List<String> names = new ArrayList<String>();
Si eres nuevas arquitecturas orientadas a objetos a, que podría haber esperado en lugar de ver algo así como ArrayList<String> names = new ArrayList<String>();
. Después de todo, ¿acaba de decir que es un nuevo ArrayList
, por lo que no debería almacenarlo en una variable del tipo ArrayList
?
Bueno, ciertamente puedes hacer eso. Sin embargo, List
es una interfaz, como una especie de plantilla, que se dice que ArrayList
hereda. Es un contrato que dice "cada vez que utilice una implementación List
, puede esperar que estos métodos estén disponibles". En el caso de List
, los métodos son cosas como add
, get
, etc.
Pero ArrayList
es sólo una aplicación de List
. Hay otros, como LinkedList
. Los dos tienen la misma interfaz, y se pueden usar de la misma manera, pero funcionan de manera muy diferente detrás de escena. Donde ArrayList
es un acceso "aleatorio", lo que significa que encuentra directamente un elemento específico de la matriz sin iterar a través de toda la lista, LinkedList
tiene que comenzar desde el primer elemento e ir uno a uno hasta que llegue al elemento que necesita .
El hecho es que, si bien necesita especificar cuál quiere al crear el objeto, generalmente solo necesita comunicar nada más que el hecho de que es List
, por lo que simplemente dice que es eso. List
comunica que tiene una colección que está destinada a estar en el orden en que se entrega. Si no necesita comunicarse mucho, puede considerar pasarlo como Collection
, que es otra interfaz (una super-interfaz de List
). O bien, si todo lo que necesita para comunicarse es que puede iterar sobre él, incluso podría llamarlo Iterable
.
Cómo usar List y ArrayList
, u otra implementación de List, es Polymorphism
y Inheritance
, y también el motivo por el que se utilizan idiomas como Java.
En simplicidad, el polimorfismo es muchas formas, mientras que la herencia es la reutilización.
Puede haber muchos tipos de concreto y Listas listas para usted, como ArrayList, Vector
, LinkedList
y Stack
. La decisión de usar la que proviene de usted, y si mira el List API, notará que todas estas implementaciones de listas se extienden de una forma u otra desde List.
- 1. Modificar una lista de arreglos en Java
- 2. ¿Qué está mal con una lista de arreglos?
- 3. ¿Cómo almaceno arreglos en una lista STL?
- 4. Reducción de una lista de arreglos a un nuevo tamaño
- 5. Rendimiento: Creación de una lista de arreglos de HashMap.values ()
- 6. Encriptar y descifrar una lista de arreglos <String>
- 7. ¿Por qué el "para ... en" funciona de manera diferente en una lista de valores frente a una lista de diccionarios?
- 8. Algoritmo de la lista de arreglos - Entrevista
- 9. Copiando una parte de una lista a una nueva lista
- 10. ¿Qué es una lista instrumentada en Python?
- 11. Scala - convertir Lista de listas en una sola Lista: Lista [Lista [A]] en Lista [A]
- 12. ¿Por qué es malo agregar a una lista?
- 13. ¿Por qué argparse me da una lista en una lista?
- 14. ¿Qué quiere decir "U" en una lista?
- 15. una lista> una lista de listas
- 16. C# - Dumping una lista a una lista desplegable
- 17. Lista de TV lista de semántica. ¿No es una mesa?
- 18. Agregar una cadena a una lista
- 19. ¿es posible agregar una lista a una estructura?
- 20. ¿Qué es una lista de lenguajes de programación al curry?
- 21. ¿Qué es una lista de cambios en IntelliJ IDEA?
- 22. Indexación de Mongo en arreglos de objetos frente a objetos
- 23. anexar tuplas a una lista
- 24. cómo obtener una lista secundaria de una lista en ocaml
- 25. Mover un miembro de una lista al frente de la lista
- 26. Vista de cuadrícula de ASP.NET frente a Vista de lista
- 27. Convertir datos.Secuencia a una lista?
- 28. Añadir propiedad a una lista?
- 29. Funciones del conjunto hash y lista de arreglos
- 30. data.frame filas a una lista
¡Dios mío, * esto * nunca se ha pedido antes! Para el OP, considere buscar en el foro primero antes de preguntar. –
@Hovercraft, ¿está seguro de que nunca se lo preguntaron antes? – Atreys
Votación para volver a abrir: no creo que la publicación vinculada sea un duplicado. Se trata de codificar a la interfaz frente a la implementación, mientras que en realidad se está preguntando cuál es la diferencia entre 'List' y' ArrayList'. –