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?

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top