Laden...

2 Listen vergleichen

Erstellt von tux83 vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.275 Views
T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren
2 Listen vergleichen

Hi!

Also ich habe 2 Listen (list<>) angelegt, die Elemente der Listen sind vom Typ long. Beide Listen werden dynamisch aus unterschiedlichen DB- Tabellen befüllt, je nach Abfrage, d.h. beide Listen haben eine unterschiedliche Anzahl von Elementen und auch unterschiedliche Elemente. In beiden Listen ist aber genau ein Element gleich und das muss ich finden. Also im Prinzip muss jeder Wert mit jedem verglichen werden- das sind nicht so viele, max. 20 pro Liste oder so. Gibt es für sowas eine fertige Methode oder muss ich mir da selber was ausdenken?
Habe schon gesucht, aber nichts passendes dafür gefunden.

thx

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo tux83,

das musst du selbst programmieren. Bei ca. 20 Elementen kannst du problemlos noch zwei geschachtelte Schleifen nehmen und ganz innen jedes Element mit jedem zu vergleichen.

herbivore

112 Beiträge seit 2006
vor 16 Jahren

Hi,

ich hab sowas mal gelöst, in dem ich den Inhalt der einen Liste in nen String gespeichert hab (über ne Schleife) und dann mit ner weiteren Schleife (der 2ten Liste) überprüft ob der Wert im String vorhanden ist.

Kann Dir aber leider ned sagen was schneller is, mir fehlts noch n bissi an allgemeiner Erfahrung 😉

Grüße,
SaberRider

    • Lieber Fürst in der Hölle als Sklave im Himmel - 8)
L
770 Beiträge seit 2006
vor 16 Jahren

ich hab sowas mal gelöst, in dem ich den Inhalt der einen Liste in nen String gespeichert hab (über ne Schleife) und dann mit ner weiteren Schleife (der 2ten Liste) überprüft ob der Wert im String vorhanden ist.

und was machst du, wenn du zB value 2 suchst aber nur den wert 20 gibt? findet er im string die 20, is aber nicht die 2 🙂 oder hast du eien gewisse syntax eingehalten ?

lg

lg Lion

112 Beiträge seit 2006
vor 16 Jahren

Hi,

hab immer n ";" zwischenrein gesetzt und mit ner regular expression geprüft.

also

1234;15;2314;31532;1324;

etc.

Grüße,
SaberRider

    • Lieber Fürst in der Hölle als Sklave im Himmel - 8)
T
tux83 Themenstarter:in
51 Beiträge seit 2007
vor 16 Jahren

OK, danke für die schnellen Antworten- ich denke ich werde das mit Schleifen machen, das scheint mir auf den ersten Blick am einfachsten zu sein.

B
1.529 Beiträge seit 2006
vor 16 Jahren

Wenn die Listen sortiert sind, kannst du mit linearen Aufwand das doppelte Element finden.
Die doppelte Schleife hat den Aufwand O(n*k). Bei so wenigen Elementen würde sich das extra Sortieren also nicht lohnen.

0
767 Beiträge seit 2005
vor 16 Jahren

reichts nicht, nur über 1 foreach über Liste1 zu machen und deren elemente e1 mit liste2.Contains(e1) zu prüfen?

loop:
btst #6,$bfe001
bne.s loop
rts

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo 0815Coder,

kann man auch machen.

herbivore

B
1.529 Beiträge seit 2006
vor 16 Jahren

Ist aber das gleiche, da Contains die zweite Schleife kapselt.

0
767 Beiträge seit 2005
vor 16 Jahren

natürlich macht .Contains() das.
aber wozu den code selber schreiben wenns schon wer anderer getan hat?

loop:
btst #6,$bfe001
bne.s loop
rts

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Borg,

vom Aufwand her ja, dadurch dass man die zweite Schleife kapselt, kann man die erste aber leicht mit break verlassen. Contains zu verwenden hat also schon Vorteile.

herbivore

B
1.529 Beiträge seit 2006
vor 16 Jahren

Ok, das mit dem break stimmt. Wenn ich aber eine Abbruchbedingung brauche, vewende ich eh eine while-Schleife.