J'enseignerai peut-être bientôt un "cours intensif Java". Bien qu'il soit probablement sûr de supposer que les membres du public connaîtront la notation Big-O, il n'est probablement pas sûr de supposer qu'ils sauront quel est l'ordre des différentes opérations sur diverses implémentations de collection.
Je pourrais prendre le temps de générer moi-même une matrice récapitulative, mais si elle est déjà quelque part dans le domaine public, j'aimerais bien la réutiliser (avec le crédit approprié, bien sûr).
Quelqu'un a des pointeurs?
java
collections
big-o
Jared
la source
la source
Réponses:
Ce site Web est assez bon mais pas spécifique à Java: http://bigocheatsheet.com/
la source
Le livre Java Generics and Collections contient ces informations (pages: 188, 211, 222, 240).
Répertorier les implémentations:
Définir les implémentations:
Implémentations de la carte:
Implémentations de file d'attente:
Le bas du javadoc pour le package java.util contient quelques bons liens:
la source
Les Javadocs de Sun pour chaque classe de collection vous diront généralement exactement ce que vous voulez. HashMap , par exemple:
TreeMap :
TreeSet :
(c'est moi qui souligne)
la source
Le gars ci-dessus a donné une comparaison pour HashMap / HashSet vs TreeMap / TreeSet.
Je vais parler d'ArrayList vs LinkedList:
Liste des tableaux:
get()
add()
ListIterator.add()
ouIterator.remove()
, ce sera O (n) pour décaler tous les éléments suivantsLinkedList:
get()
add()
ListIterator.add()
ouIterator.remove()
, ce sera O (1)la source
if you insert or delete an element in the middle using ListIterator.add() or Iterator.remove(), it will be O(1)
Pourquoi? nous devons d'abord trouver l'élément au milieu, alors pourquoi ce n'est pas O (n)?ListIterator.add()
orIterator.remove()
" Nous avons un itérateur.