Verständnisprobleme mit list.containts und list.containtsAll

  • Hallo an alle,


    ich habe verständnisprobleme beim Vergleich von listen. Und zwar möchte ich überprüfen, ob elemente einer Liste B in einer Liste A enthalten sind. Funktioniert das mit containts oder containtsAll? Also die Liste B enthält beispielsweise 3 Elemente: "A", "B" und "C" und Liste A: "A","B","C","D","E",... Wird mit containtsAll alle elemente von Liste B geprüft ob diese in A enthalten sind und true ausgegeben falls dies der fall ist? Weitere Frage: Nehmen wir an, dass Liste A nicht das Element "B" enthält. Wäre dann das ergebnis false, wenn ich es mit containtsAll überprüfe? Und mit containts wird nur nach einzelnen Elementen gecheckt, also ist generell ein A, B oder C von Liste B in Liste A enthalten? Wenn ja, dann = true. Ist das so richtig, oder habe ich das falsch verstanden??


    Danke im voraus

  • Hoi,


    im Zweifel würd ichs einfach in ner kleinen Testanwendung ausprobiern ...


    Aber an sich:


    a.containsAll(b) überprüft, ob a alle elemente, die in b enthalten sind, auch enthält.
    Also



    Das contains würde so aussehen


    Java
    if (a.contains("A")) {
    // "A" enthalten
    }


    habs jetzt nur schnell hier alles runter getippt und nicht getestet ... jedoch ist das Javadoc ziemlich eindeutig


    Zitat

    Returns true if this collection contains all of the elements in the specified collection.


    Gruß,
    matze

  • ob die elemente von B auch in A vorkommen


    das ist das was a.containsAll(b) macht.


    In meinem Beispiel würde b.containsAll(a) false ergeben, das ist richtig.


    Wenns dir langt, dass nur 1 einziges beliebiges Element von b auch in a ist, müsstest du wohl eine Schleife durchlaufen ...


    Java
    boolean vorhanden = false; 
    for (String s : b) {
         if (a.contains(s)) {
              // jop, ist vorhanden, kannst raus springen
              vorhanden = true; 
              break; 
         }
    }
  • ah ok. Noch eine letzte Frage: nehmen wir an Liste B hat `mehrere Elemente, z.B. 3 Elemente wie ich es in meinem ersten Beitrag beschrieben habe. Wird dann mit containtsAll nach allen Elementen gecheckt, ob diese in A vorkommen und true ausgegeben wenn dies der fall ist? Wenn beispielsweise Liste A, nur eines davon nicht enthält, wäre es dann false oder? (sry wegen diesen kleinen Fragen, ich würde es natürlich selber über eclipse probieren. >Sitze jedoch an einem fremden pc wo kein eclipse drauf ist). Bitte daher um Verständnis.

  • Hoi,


    kein Thema, dazu gibts ja das Forum ;)


    Wenn in der Liste a (und ich schreib a bewusst klein, da es das Objekt ist und nicht mit dem Inhalt "A" verwechselt werden soll) jetzt die Werte


    A, B, C, D, E


    stehen, und in Liste b


    A, B, F


    kommt mit a.containsAll(b) false heraus. Wirft man das F weg und ersetzt es durch E ist es true.


    Also es wird die komplette Collection abgeglichen, egal wie viele Werte.



    Gruß,
    matze

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!