Optimizing ArrayList.removeAll
Question
Beaucoup de gens ont dit que ArrayList.removeAll
est vraiment lent avec des réseaux de grande taille.
article propose deux solutions optimisées à la vitesse ArrayList.removeAll, mais nécessite leur mise en œuvre dans le classe elle-même, et ne peut être utilisé à l'extérieur comme une solution.
Est-il possible d'appliquer ce genre de solution à court de copier le code source ArrayList et en utilisant ma propre version de celui-ci?
Modifier. Je suppose que je devrais ajouter mon besoin pour cela, car il y a probablement un moyen de faire ce que je veux sans ArrayList.removeAll
J'ai deux listes d'environ 70,000 longs
chacun. Ils sont presque identiques, mais une liste a quelques numéros plus que la deuxième liste n'a pas, et je veux les trouver. La seule façon que je connaisse les trouver est de faire first.removeAll(second)
pour trouver la différence. Y at-il une autre façon?
La solution
Qu'en est-il en utilisant une structure de données qui a un bien meilleur temps de retrait, comme HashSet ou TreeSet? Ainsi, la grande raison d'utiliser une ArrayList est due à l'O temps d'accès rapide (1) aux dossiers d'accès. Mais si vous essayez de différence de jeu, alors vous devriez peut-être utiliser des ensembles. Juste une pensée.
Autres conseils
Vous pouvez créer une sous-classe de ArrayList
pour optimiser cette méthode (et éventuellement d'autres).