List<> vergleichen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • List<> vergleichen

    hallo zusammen,

    ich bin auf der suche nach einer schnellen lösung wie zwei listen miteinander verglichen werden können. ich möchte nicht auf .Equals vergleichen da dies ja "nur" die referenzen vergleicht, sondern ich möchte die inhalte der listen vergleichen.
    dabei möchte ich aber auf diese methode wenn es geht verzichten:

    Quellcode

    1. List<string> list1 = new List<string>();
    2. List<string> list2 = new List<string>();
    3. list1.add("ka");
    4. list2.add("ka");
    5. for(int i = 0; i < list1.count; i++)
    6. {
    7. if(list1[i] == list2[i])
    8. {
    9. MessageBox.Show("gleich");
    10. }
    11. else
    12. {
    13. MessageBox.Show("ungleich");
    14. }
    15. }
    Alles anzeigen



    da dies wohl nicht so super flott ist wenn die beiden listen mal richtig dick werden...
    hat jemand ne gute idee?

    thx, truespin
  • hallo,

    aus der .net hilfe:
    "Die Standardimplementierung von Equals unterstützt Verweisgleichheit für Referenztypen und bitweise Gleichheit für Werttypen. Verweisgleichheit ist gegeben, wenn die zu vergleichenden Objektverweise auf dasselbe Objekt verweisen. Bitweise Gleichheit ist gegeben, wenn die binären Darstellungen der zu vergleichenden Objekte identisch sind. "


    außerdem hab ich es schon versucht ;)

    thx, truespin
  • Also ich glaube nicht, dass es einen effizienteren Algorithmus als den von dir schon geposteten gibt: (oder sogar geben kann)

    truespin schrieb:

    Quellcode

    1. for(int i = 0; i < list1.count; i++)
    2. {
    3. if(list1[i] == list2[i])
    4. {
    5. MessageBox.Show("gleich");
    6. }
    7. else
    8. {
    9. MessageBox.Show("ungleich");
    10. }
    11. }
    Alles anzeigen


    Um den Inhalt zweier Listen auf Gleichheit zu prüfen muss ich ja zumindest jedes Element jeder liste einmal mit irgendetwas (spielt hier erstmal keine Rolle mit was) vergleichen, sonst kann man darüber ja keinerlei Aussage treffen. Und deine Methode hat eben genau diese minimale Anzahl an Vergleichen schon erreicht. Ich sehe da kein Einsparpotential.
    Auch solche transitiven Zusammenhänge sparen dabei keine Vergleiche, erhöhen die Zahl derer eher noch.
  • Hey,

    ich weiss nicht was das für Listen sind und ich kenn die Inhalte nicht, aber wenn man einen binären Suchbaum hat, dann bräuchte man nicht zwangsweise alle Elemente prüfen sondern nur die unteresten Knoten miteinandner vergleichen.

    Mir fällt jetzt grad nichts weiter groß zu dem Thema ein, aber ich denke, das man mit einer Baumstruktur die Laufzeitklasse mit Sicherheit verbessern kann.