Doppelte Einträge aus LinkedList löschen



  • Hi,

    gibt es eine Funktion mit der ich doppelte Einträge aus einer LinkedList löschen kann, bzw. wie müsste so eine Funktion aussehen? DIe liste enthält nur Strings.

    Bonny



  • Nimmt doch gleich n HashSet, oder kopier alles von der Liste ins HashSet



  • IMHO müsstest du einmal durch die Liste laufen und dabei jedes Element mit ALLEN nachfolgenden Elementen vergleichen. Ist aber sicher ziemlich rechenaufwändig, bei größeren Listen.
    Kann sein, dass es da einen eleganteren Algorithmus für gibt.

    Wie groß ist denn so eine Liste und wie oft würdest du auf doppelte Einträge überprüfen?



  • oder liste sortieren/sortieren lassen/sofort sortiert einfügen, dann nachbarn vergleichen.



  • Eine LinkedList ist für solche Aufgaben nicht die geeignetete Datenstruktur. Duplikate entfernen geht gut bei Suchbäumen O(log n + k) oder Hashtabellen O(k). Bei den Java-Collections herrscht eine Konvention, die vorgibt, dass Suchbäume irgendwie Tree im Namen haben und Hashtabellen irgendwie Hash... heißen.

    Die beste Lösung wäre jedoch in diesem Fall ein Set, weil es Duplikate gleich beim Einfügen verhindert. Ob ein Set wirklcih für dich jetzt toll ist kann dir natürlich keiner sagen, weil wir nicht wissen, für was du die Datenstruktur alles verwenden willst.


Anmelden zum Antworten