Optimierung von ArrayList.removeAll

8

Viele Leute haben gesagt, dass ArrayList.removeAll bei großen Arrays sehr langsam ist.

Dieser Artikel enthält zwei optimierte Lösungen für die ArrayList.removeAll-Geschwindigkeit, erfordert jedoch die Implementierung in der Klasse selbst und kann nicht extern als Fix verwendet werden.

Gibt es eine Möglichkeit, diese Art von Fix anzuwenden, ohne den ArrayList-Quellcode zu kopieren und meine eigene Version zu verwenden?

Bearbeiten: Ich nehme an, ich sollte meine Notwendigkeit dafür hinzufügen, da es wahrscheinlich eine Möglichkeit gibt, was ich ohne ArrayList.removeAll machen möchte.

Ich habe zwei Listen von ungefähr 70,000 longs jeder. Sie sind fast identisch, aber eine Liste hat ein paar mehr Nummern, die die zweite Liste nicht hat, und ich möchte sie finden. Der einzige Weg, um sie zu finden, ist first.removeAll(second) , um den Unterschied zu finden. Gibt es einen anderen Weg?

    
Rick Button 24.07.2011, 00:39
quelle

2 Antworten

9

Wie wäre es mit einer Datenstruktur, die eine viel bessere Zeit zum Entfernen hat, wie HashSet oder TreeSet? Der Hauptgrund für die Verwendung einer Arraylist ist daher die schnelle Zugriffszeit O (1) für den Zugriff auf Datensätze. Aber wenn Sie versuchen, Unterschied zu setzen, dann sollten Sie vielleicht Sätze verwenden. Nur ein Gedanke.

    
Milhous 24.07.2011, 02:35
quelle
1

Sie können eine Unterklasse von ArrayList erstellen, um diese Methode (und möglicherweise andere) zu optimieren.

    
Jeffrey 24.07.2011 00:48
quelle

Tags und Links