J'ai besoin d'une structure de données commandée avec O (1) index de fonctionnement. Je stocke les pointeurs d'objet dans la structure de données. Des idées? Une sorte de linkedhashmap? P>
Voir ce que "indexof" signifie: list.indexof (objet) code>
p>
5 Réponses :
Essayez d'utiliser la file d'attente prioritaire plutôt que de le faire commander ... P>
? Hachmaps ne sont même pas ordonnés.
Cette question est ambiguë pour commencer.
indexof (..) code> opération. LI>
- Quel genre d'objets allez-vous stocker dans la collection? LI>
- trouve l'index
(..) code> la seule responsabilité de la collection. li>
ol> Mettez simplement, une façon de le faire serait de maintenir un fichier qui indiquerait chaque objet ou des touches avec la liste des indices. P> HashMap<Object, List<Integer>>
Alors pourquoi ne pas avoir une autre structure de données qui stocke des références à chaque objet de la liste d'origine?
Je dois gérer HashMap
Par une source de données, vous voulez dire dans des collections Java - alors. Si vous voulez dire s'il existe une structure de données définie par l'utilisateur ou un moyen de le faire, alors bien sûr.
Si vous utilisez une liste de sauts ou un arbre équilibré, vous pouvez obtenir O (journal n) pour Si vous maintenez une liste de liste Je n'y ai pas pensé profondément, mais je ne pense pas qu'il soit possible d'obtenir O (1) Insert et O (log n) index de. p> Insérer code> et
indexof code>. P>
triée
hashmap
indexof code> dans Exchange pour O (n)
Insérer code>. P>
sonne comme si vous voulez un triedmap < / Code>
, TREEMAP < / Code>
Être la mise en œuvre de la référence. La performance est journal (n) code>, et c'est probablement le meilleur que vous allez obtenir de la recherche dans une structure ordonnée (au moins dans les bibliothèques standard). P>
Stockez l'objet comme clé et valeur dans HASHMAP. Je suppose que vous cherchez à récupérer l'objet éventuellement. P>