Löschen Sie alle Daten der Array-Liste

8

Warum löscht der folgende Code nicht alle Daten der Array-Liste?

%Vor%

Warum wird 10 auf den Bildschirm gedruckt?

Vielleicht gibt es noch eine spezielle Funktion, die alles löscht?

    
lolalola 19.05.2010, 06:02
quelle

6 Antworten

6
%Vor%

entfernt alle Elemente im Array.

%Vor%

entfernt das Element des i-ten Index im Array.

    
Johnny 19.05.2010, 07:03
quelle
11

Sie rufen nur RemoveAt 10 mal auf. Wenn i 10 erreicht, wird auch ID.Count 10 sein. Sie könnten dies auf folgende Weise beheben:

%Vor%

Dies ist jedoch eine O (n 2 ) Operation, da das Entfernen eines Eintrags vom Anfang der Liste beinhaltet, alles andere zu kopieren.

Effizienter (O (n)):

%Vor%

oder gleichwertig aber einfacher:

%Vor%

Aber die Verwendung von ID.Clear() ist wahrscheinlich effizienter als all diese, obwohl es auch O (n) ist.

    
Jon Skeet 19.05.2010 06:08
quelle
6
%Vor%

für weitere Details: Ссылка

    
Pranay Rana 19.05.2010 06:04
quelle
2

Nach dem Entfernen von 10 Elementen, ID.Count() == 10 und i == 10 stoppt die Schleife.

Verwenden Sie ID.Clear() , um alle Elemente im Array zu entfernen Liste.

    
Oded 19.05.2010 06:07
quelle
2

Verwenden Sie die Methode clear ()

oder

ändern Sie ID.RemoveAt(i); in ID.RemoveAt(0);

Immer wenn ein Element aus der Sammlung entfernt wird, ändert sich auch dessen Index. Wenn Sie also ID.RemoveAt(0); sagen, wird das Element an Index 1 jetzt in den Index 0 verschoben. Also müssen Sie wieder das gleiche Element entfernen (wie zum Beispiel die Warteschlange). bis du das letzte Element erreichst. Wenn Sie jedoch alle Elemente auf einmal entfernen möchten, können Sie besser die Methode Clear () verwenden.

    
Amsakanna 19.05.2010 06:05
quelle
1

Ihr Code tut:

%Vor%

Im Allgemeinen entfernt Ihre Methode jedes zweite Element aus der Liste.

Verwenden Sie stattdessen ArrayList.Clear , wie andere bereits erwähnt haben.

    
Mike 19.05.2010 06:12
quelle

Tags und Links