Eu posso estar ensinando um "curso intensivo de Java" em breve. Embora seja provavelmente seguro assumir que os membros do público conhecerão a notação Big-O, provavelmente não é seguro assumir que eles saberão qual é a ordem das várias operações nas várias implementações de coleção.
Eu poderia dedicar algum tempo para gerar uma matriz de resumo, mas se ela já estiver disponível em algum lugar público, gostaria de reutilizá-la (com o devido crédito, é claro).
Alguém tem alguma dica?
java
collections
big-o
Jared
fonte
fonte
Respostas:
Este site é muito bom, mas não específico para Java: http://bigocheatsheet.com/
fonte
O livro Java Generics and Collections possui essas informações (páginas: 188, 211, 222, 240).
Listar implementações:
Defina implementações:
Implementações de mapas:
Implementações da fila:
A parte inferior do javadoc para o pacote java.util contém alguns bons links:
fonte
Os Javadocs da Sun para cada classe de coleção geralmente informam exatamente o que você deseja. HashMap , por exemplo:
TreeMap :
TreeSet :
(ênfase minha)
fonte
O cara acima deu comparação para HashMap / HashSet vs. TreeMap / TreeSet.
Vou falar sobre ArrayList vs. LinkedList:
ArrayList:
get()
add()
ListIterator.add()
ouIterator.remove()
, será O (n) para mudar todos os seguintes elementosLinkedList:
get()
add()
ListIterator.add()
orIterator.remove()
, será O (1)fonte
if you insert or delete an element in the middle using ListIterator.add() or Iterator.remove(), it will be O(1)
porque? primeiro precisamos encontrar um elemento no meio, então por que não O (n)?ListIterator.add()
ouIterator.remove()
" Temos um iterador.