Wenn große Datenmengen verarbeiten ich finde mich oft die folgenden Schritte ausführen:HashSet vs Arraylist enthält Performance
HashSet<String> set = new HashSet<String>();
//Adding elements to the set
ArrayList<String> list = new ArrayList<String> (set);
So etwas wie „Dumping“ den Inhalt des Satzes in der Liste. Normalerweise mache ich das, weil die Elemente, die ich hinzufüge, oft Duplikate enthalten, die ich entfernen möchte, und dies scheint eine einfache Möglichkeit zu sein, sie zu entfernen.
Mit nur diesem Ziel vor Augen (Vermeidung von Dubletten) Ich könnte auch schreiben:
ArrayList<String> list = new ArrayList<String>();
// Processing here
if (! list.contains(element)) list.add(element);
//More processing here
Und somit keine Notwendigkeit für den Satz in die Liste „Dumping“. Ich würde jedoch einen kleinen Haken machen, bevor ich jedes Element einfüge (was ich auch für HashSet halte)
Ist eine der beiden Möglichkeiten deutlich effizienter?
Sie haben Ihren ersten Teil der Frage falsch. Du legst die Liste im Set ab, um Duplikate loszuwerden, nicht umgekehrt, oder? – MirMasej
Warum testest du es nicht? Übrigens warum sollte ich das Set sowieso in eine Liste umwandeln? Das Durchlaufen von Set wird für große Arrays höchstwahrscheinlich schneller sein. – luk32
Hallo, danke für deine Kommentare. In diesem Szenario befülle ich mein Set mit den Daten (um Duplikate zu vermeiden) und lege es dann in eine Liste, auf diese Weise erhalte ich effektiv eine Liste ohne Duplikate. Wenn ich die Liste nicht brauchte, würde ich sie nicht erstellen, aber manchmal wird eine Sortierung angewendet, und ein Teil des Codes, mit dem ich arbeite, erfordert Listen. – Jorge