307 votes

Quelle est la différence entre ArrayList.clear() et ArrayList.removeAll() ?

En supposant que l' arraylist est défini comme ArrayList<String> arraylist, est arraylist.removeAll(arraylist) équivalent à arraylist.clear()?

Si oui, puis-je supposer que la méthode clear() est plus efficace pour vider le tableau de la liste?

Existe-il des mises en garde à l'aide d' arraylist.removeAll(arraylist) au lieu de arraylist.clear()?

424voto

Jeffrey Points 22209

Code source de Clear :

Supprimez tout le code source (telle que définie dans `` ) :

Clear est beaucoup plus rapide puisqu’il n’a pas à faire face à tous ces appels de méthode supplémentaire.

Et comme le souligne elodie, augmente la complexité de temps de à O(n^2) par opposition à `` d’o (n).

61voto

Geoff Points 1616

La complexité de temps de ArrayList.clear() est et de removeAll est .

Alors oui, ArrayList.clear est beaucoup plus rapide.

9voto

Joachim Sauer Points 133411

Sauf s'il y a une optimisation spécifique qui vérifie si l'argument passé à l' removeAll() est la collection elle-même (et j'ai très doute qu'une telle optimisation est de là), il sera nettement plus lent qu'un simple .clear().

En dehors de cela (et au moins tout aussi important): arraylist.removeAll(arraylist) est juste obtus, du code source de confusion. C'est un très rétro façon de dire "clair de cette collection". Quel avantage aurait-il plus de la très compréhensible arraylist.clear()?

7voto

lucapette Points 13109

Ils servent à deux fins différentes. Clear() efface simplement une instance de la classe, removeAll supprime tous les objets donnés et retourne l’état de l’opération.

5voto

Nicholas Points 4169

``va passer par le tableau sous-jacent et chaque entrée de la valeur null ;

passera par la vérification de ArrayList pour collection et si elle existe.

J’imagine que `` est manière plus rapide puis removeAll parce qu’il n’est pas en comparant, etc..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X