2009-06-23 4 views
0

En théorie, est-il plus efficace de supprimer des éléments d'un ArrayList ou d'un LinkedList?Est-il plus efficace de supprimer des éléments d'une ArrayList ou d'une LinkedList?

+0

Cela devrait vraiment être reformulé. Quelque chose comme "Est-il plus efficace de supprimer des éléments d'une ArrayList ou LinkedList?" La théorie a peu à voir avec cela, et «plus facile» est juste trompeur. – AgileJon

+2

Johanna, veuillez définir ce que vous voulez dire par "plus facile". Plus facile pour le programmeur ou plus efficace pour le CPU? –

Répondre

10

Il est « plus facile » (soit plus efficace) pour les supprimer d'un LinkedList, parce que le retrait d'un ArrayList exige de déplacer tous les éléments suivants à une nouvelle position dans la liste — tous les éléments suivants du tableau doit être attribué une nouvelle valeur. Avec une liste chaînée, un seul pointeur (ou deux, avec une liste doublement chaînée) doit être réattribué.

5

Eh bien, la suppression d'un élément d'une liste (doublement liée) est O (1). Mais la suppression d'un tableau nécessitera que les éléments restants soient décalés d'un espace dans le tableau, qui est O (n). Cela dit, obtenir un élément spécifique dans une liste par index est O (n), alors qu'obtenir un élément spécifique dans un tableau par index est O (1). Donc, pour la suppression réelle, LinkedList sera mieux. Il y a plus d'informations sur Array's versus LinkedList here.

+0

Veuillez noter que 'linkedList.remove (100)' est O (n). – sulai

Questions connexes