Puede que enseñe un "curso intensivo de Java" pronto. Si bien es seguro asumir que los miembros de la audiencia conocerán la notación Big-O, probablemente no sea seguro suponer que sabrán cuál es el orden de las diversas operaciones en diversas implementaciones de colecciones.
Podría tomarme el tiempo para generar una matriz de resumen, pero si ya está en el dominio público en algún lugar, seguro que me gustaría volver a usarla (con el crédito adecuado, por supuesto).
Alguien tiene algún puntero?
java
collections
big-o
Jared
fuente
fuente
Respuestas:
Este sitio web es bastante bueno pero no específico de Java: http://bigocheatsheet.com/
fuente
El libro Java Generics and Collections tiene esta información (páginas: 188, 211, 222, 240).
Lista de implementaciones:
Establecer implementaciones:
Implementaciones de mapas:
Implementaciones de cola:
La parte inferior de javadoc para el paquete java.util contiene algunos enlaces buenos:
fuente
Los Javadocs de Sun para cada clase de colección generalmente le indicarán exactamente lo que desea. HashMap , por ejemplo:
TreeMap :
TreeSet :
(énfasis mío)
fuente
El chico de arriba dio una comparación para HashMap / HashSet vs. TreeMap / TreeSet.
Hablaré sobre ArrayList vs. LinkedList:
Lista de arreglo:
get()
add()
ListIterator.add()
oIterator.remove()
, será O (n) para cambiar todos los elementos siguientesLista enlazada:
get()
add()
ListIterator.add()
oIterator.remove()
, será O (1)fuente
if you insert or delete an element in the middle using ListIterator.add() or Iterator.remove(), it will be O(1)
¿por qué? primero necesitamos encontrar un elemento en el medio, entonces ¿por qué no O (n)?ListIterator.add()
oIterator.remove()
" Tenemos un iterador.