Być może wkrótce będę prowadzić „szybki kurs Java”. Chociaż prawdopodobnie można bezpiecznie założyć, że członkowie publiczności będą znali notację Big-O, prawdopodobnie nie jest bezpiecznie zakładać, że będą wiedzieć, jaka jest kolejność różnych operacji na różnych implementacjach kolekcji.
Mógłbym zająć trochę czasu, aby samodzielnie wygenerować macierz podsumowań, ale jeśli jest już gdzieś w domenie publicznej, na pewno chciałbym go ponownie wykorzystać (oczywiście z odpowiednim kredytem).
Czy ktoś ma jakieś wskazówki?
java
collections
big-o
Jared
źródło
źródło
Odpowiedzi:
Ta strona jest całkiem dobra, ale nie jest specyficzna dla Javy: http://bigocheatsheet.com/
źródło
W książce Java Generics and Collections znajdują się te informacje (strony: 188, 211, 222, 240).
Lista implementacji:
Zestaw realizacji:
Implementacje map:
Implementacje kolejki:
W dolnej części javadoc pakietu java.util znajduje się kilka dobrych linków:
źródło
Dokumenty Javadocs firmy Sun dla każdej klasy kolekcji na ogół mówią dokładnie, czego chcesz. HashMap , na przykład:
Mapa drzewa :
TreeSet :
(podkreślenie moje)
źródło
Facet powyżej przedstawił porównanie HashMap / HashSet vs. TreeMap / TreeSet.
Porozmawiam o ArrayList vs. LinkedList:
ArrayList:
get()
add()
ListIterator.add()
lubIterator.remove()
, przesunięcie wszystkich kolejnych elementów będzie O (n)Połączona lista:
get()
add()
ListIterator.add()
lubIterator.remove()
, będzie to O (1)źródło
if you insert or delete an element in the middle using ListIterator.add() or Iterator.remove(), it will be O(1)
czemu? najpierw musimy znaleźć element pośrodku, więc dlaczego nie O (n)?ListIterator.add()
orIterator.remove()
” Mamy iterator.