Una estructura de datos que en una máquina de Turing teórica realiza la inserción y eliminación de O (1) para un iterador arbitrario frente a O (n) si se usara una matriz.
¿Qué los hace mejores que las matrices en Java? Nada. Las computadoras reales tienen localidad de caché L1 / 2, paginación de memoria y muchos otros parámetros que dominan completamente la parte O (1). Nunca los he visto funcionar mejor que un ArrayList o ArrayDeque, incluso para entradas grandes.
No me lo quites, tómalo de Joshua Bloch, autor del marco de colecciones de Java:
- ¿Cuáles son las principales diferencias en términos de definición / idea clave, dominio de aplicación y eficiencia entre árboles de segmento, árboles de intervalo, árboles indexados binarios y árboles de rango?
- ¿Cuál es la diferencia entre Algorithm y API?
- ¿Qué te dirías a ti mismo cuando recién comenzaste a programar, aprender algoritmos?
- Algoritmos: ¿Cómo decide si usar BFS o DFS para un problema en particular?
- ¿Qué hace que Google sea poderoso? ¿Son los datos que tienen o el algoritmo eficiente que desarrollan?
@jerrykuch @shipilev @AmbientLion ¿Alguien usa LinkedList? Lo escribí y nunca lo uso.
– Joshua Bloch (@joshbloch) 3 de abril de 2015
Puede haber algún algoritmo en el que LinkedList funcione mejor que una matriz en la práctica, pero no lo he visto y dudo que tal caso de uso no pueda abordarse mejor con un algoritmo y una estructura de datos diferentes.