Je traite un grand nombre d'enregistrements de base de données, chacun avec une clé unique.Meilleure structure de données que HashTable pour garder une trace des enregistrements traités?
En raison de la nature de ma base de données, ma méthode de traitement peut rencontrer la même clé deux fois, car il s'agit d'une base de données relationnelle et un enregistrement peut avoir plusieurs enregistrements «parents».
C'est une perte de temps, de puissance de traitement, de mémoire et de taille de fichier pour traiter des enregistrements plusieurs fois. J'ai donc besoin d'un moyen de garder une trace des identifiants que j'ai déjà traités.
J'ai regardé HashTable, puisque c'est O (1) pour obtenir et mettre des fonctions et ce sont les seules fonctions dont j'ai besoin. Cependant, il semble que ce soit un gaspillage de mémoire d'avoir essentiellement un bloc de mémoire (1000+)/Load Factor stockant essentiellement des valeurs booléennes. De plus, je ne connais pas ma capacité désirée et je devrais supporter beaucoup de remaniements ou allouer beaucoup plus de mémoire que nécessaire.
Je recherche une structure de données dans laquelle vous pouvez ajouter une valeur et lui donner une erreur si l'ID existe déjà dans la collection, comme retourner false à partir de la méthode put(T value)
.
O (1) est un avantage de HashSet, pas une exigence du problème. Désolé ce n'était pas clair – CodeFusionMobile
On dirait que l'ensemble est exactement ce dont j'avais besoin. Maintenant, j'ai juste besoin de décider si O (log (n)) vs O (1) est plus important que d'utiliser de la mémoire supplémentaire. – CodeFusionMobile