2 listen vergleichen, die auch null Elemente haben können !

Jaklin

Mitglied
  • Hallo, der Code funktioniert nicht genau kann jemand mir bitte helfen ?
  • Die Methode nimmt zwei Parameter vom Typ List<Integer> entgegen.
    • Es ist möglich, dass eine oder beide der übergebenen Listen null ist.
    • Es ist möglich, dass die Listen Elemente enthalten, die null sind.
  • Die Methode gibt einen boolean zurück, der genau dann true ist, wenn beide Listen gleich sind.
    • Wenn zwei verglichene Listen jeweils null sind, sind sie als gleich zu betrachten.
    • Wenn eine der beiden Listen null ist und die andere nicht, sind sie als ungleich zu betrachten.
    • Zwei Listen, die nicht null sind, sind gleich genau dann, wenn jedes Element einer Liste mit dem jeweils an der gleichen Position befindlichen Element der anderen Liste übereinstimmt.
      • Listen, die nicht die gleiche Länge haben, können somit nicht gleich sein.
      • Listen, die die gleiche Menge von Elementen enthalten, aber in unterschiedlicher Reihenfolge, sind ebenfalls nicht als gleich zu betrachten.
      • Wenn zwei verglichene Elemente jeweils null sind, sind sie als gleich zu betrachten.
      • Wenn eines von zwei Elementen null ist und das andere nicht, sind sie als ungleich zu betrachten

Java:
public static boolean istGleich(List<Integer> l1, List<Integer> l2)
{
    // wenn beide Listen null sind, sind sie gleich
    if (l1 == null && l2 == null)
    {
        return true;
    }
    
    // wenn eine von beiden Listen null ist, sind sie nicht gleich
    // (der Fall 'beide null' ist oben behandelt worden)
    if (l1 == null || l2 == null)
    {
        return false;
    }
    
    // wenn sich die Laenge der Listen unterscheidet,
    // sind sie nicht gleich
    if (l1.size() != l2.size())
    {
        return false;
    }
    
    // Schleife zaehlt Indizes der Liste hoch, um die Elemente
    // an der jeweiligen Position zu vergleichen
    // (da die Laengen gleich sind, ist sichergestellt, dass ueber
    // beide Listen gleich oft iteriert werden muss)
    
    if( l1!=null && l2!=null && l1.size()==l2.size()){
    for (int i = 0; i < l1.size(); i++)
    {
        //Integer n1 = l1.get(i);
        //Integer n2 = l2.get(i);
        
        // wenn zwei Elemente nicht uebereinstimmen, sind
        // die Listen nicht komplett gleich
        // => damit kann direkt false zurueckgegeben werden
      
        if ( l1.get(i)!=null && (!l1.get(i).equals(l2.get(i))))
        {
            return false;
        }
      
    }
    }
    
    // wenn kein Unterschied in den Listen festgestellt wurde,
    // kann nun am Ende true zurueckgegeben werden
    return true;
}
 

KonradN

Super-Moderator
Mitarbeiter
Was auffällt:
Zeile 28 kann weg - du hast das ja alles schon geprüft.

Beim Vergleich der Elemente hast du einen Fall nicht bedacht: wenn das Element aus l1 null ist, dann prüfst du nichts. Du musst also auch abprüfen, ob das Element aus l2 auch null ist, wenn das Element aus l1 null ist.
 

Jaklin

Mitglied
Was auffällt:
Zeile 28 kann weg - du hast das ja alles schon geprüft.

Beim Vergleich der Elemente hast du einen Fall nicht bedacht: wenn das Element aus l1 null ist, dann prüfst du nichts. Du musst also auch abprüfen, ob das Element aus l2 auch null ist, wenn das Element aus l1 null ist.
habe schon ausprobiert Element l2 auch auf Null zu überprüfen , aber klappt leider nicht ! das if statment soll doch sein , um for-Schleife genau funktioniert !
 

KonradN

Super-Moderator
Mitarbeiter
Du sollst nichts auf null setzen sondern die Elemente richtig prüfen. Du prüfst nur die Gleichheit wenn das Element aus der ersten Liste nicht null ist. Wenn es null ist, dann prüfst du nichts.

Sprich: die letzten zwei Punkte der Aufgabe …
 

Jaklin

Mitglied
Java:
public static boolean istGleich(List<Integer> l1, List<Integer> l2)
{
    // wenn beide Listen null sind, sind sie gleich
    if (l1 == null && l2 == null)
    {
        return true;
    }
   
    // wenn eine von beiden Listen null ist, sind sie nicht gleich
    // (der Fall 'beide null' ist oben behandelt worden)
    if (l1 == null || l2 == null)
    {
        return false;
    }
   
    // wenn sich die Laenge der Listen unterscheidet,
    // sind sie nicht gleich
    if (l1.size() != l2.size())
    {
        return false;
    }
   
    // Schleife zaehlt Indizes der Liste hoch, um die Elemente
    // an der jeweiligen Position zu vergleichen
    // (da die Laengen gleich sind, ist sichergestellt, dass ueber
    // beide Listen gleich oft iteriert werden muss)
   
    //if( l1!=null && l2!=null && l1.size()==l2.size()){
    for (int i = 0; i < l1.size(); i++)
    {
        //Integer n1 = l1.get(i);
        //Integer n2 = l2.get(i);
       
        // wenn zwei Elemente nicht uebereinstimmen, sind
        // die Listen nicht komplett gleich
        // => damit kann direkt false zurueckgegeben werden
     
        if ( l2.get(i)!=null && l1.get(i)!=null && (!l1.get(i).equals(l2.get(i))))
        {
            return false;
        }
     
    }
    //}
   
    // wenn kein Unterschied in den Listen festgestellt wurde,
    // kann nun am Ende true zurueckgegeben werden
    return true;
}
wenn ich implementiere wie du gesagt hast , dann werden wieder einige Tests nicht bestanden !
 

Anhänge

  • error.PNG
    error.PNG
    20,2 KB · Aufrufe: 0

KonradN

Super-Moderator
Mitarbeiter
Das ist nicht, was ich gesagt / gemeint habe.

Du hast etwas geprüft für den Fall, dass das erste Element nicht null ist. Das ist ok.

So wie für die Listen muss aber noch ein weiterer Check gemacht werden, wenn das Element aus der ersten Liste null ist.
 

KonradN

Super-Moderator
Mitarbeiter
So wie du es beim Check der Listen gemacht hast:
Java:
if (was auch immer) return false;

if (was anderes) return false;

Alternativ kann man die Bedingungen mit oder verknüpfen, aber ich denke mit einzelnen if Befehlen ist es übersichtlicher.
 

KonradN

Super-Moderator
Mitarbeiter
Das erste hattest Du doch schon:
Java:
        if ( l1.get(i)!=null && !l1.get(i).equals(l2.get(i))) {
            return false;
        }

Das Zweite soll den Ungleich-Fall prüfen, wenn l1.get(i) == null ist. Denn der Fall fehlt ja noch in der Behandlung der Fälle.

Java:
        if ( l1.get(i)0=null && .... ) {
            return false;
        }
Da muss natürlich das .... noch ersetzt werden.

Wann wären denn die Elemente nicht gleich, wenn das Element aus l1 null ist? Oder falls es einfacher ist: wann wären sie gleich? Wenn Du das sagen kannst, dann kannst Du die Bedingung ja negieren und du hast die Bedinung, wann diese nicht gleich sind.

Wenn Dir da gerade der Überblick fehlt: Mach Dir eine Tabelle. Was für Möglichkeiten gibt es für die beiden Elemente? Und was muss da das Ergebnis sein?
Code:
Element1    Element2    Ergebnis
================================
null        null        ?
XXX         null        ?
null        XXX         ?
XXX         XXX         ?
XXX         YYY         ?
Wenn Du die Tabelle ausfüllen kannst, dann kannst Du prüfen, ob die Bedingungen richtig sind. Einfach einmal komplett durchspielen, ob ein Ungleich richtig erkannt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 2
I Zwei Listen vergleichen bei n:m Beziehung Java Basics - Anfänger-Themen 2
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 7
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
N Listen vergleichen Java Basics - Anfänger-Themen 25
G Array-Listen vergleichen und Einträge löschen ? Java Basics - Anfänger-Themen 4
D Listen in Listen in Listen ... ??? Java Basics - Anfänger-Themen 2
XWing listen Java Basics - Anfänger-Themen 7
FunkyPhil94 addLast und addFirst bei Listen Java Basics - Anfänger-Themen 6
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
S Lineare listen verkettung Java Basics - Anfänger-Themen 7
S Listen Java Basics - Anfänger-Themen 12
S Listen , Nodes am ende anängen Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
M Java Listen Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A PhoneBook mit verketteten listen Java Basics - Anfänger-Themen 48
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
S Erklaerung Listen Java Basics - Anfänger-Themen 27
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
L Skip Listen Java Basics - Anfänger-Themen 5
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
L Wie testet man (selbstgeschriebene) Listen sinnvoll? Java Basics - Anfänger-Themen 2
F Problem mit Listen Java Basics - Anfänger-Themen 5
J Listen Operationen Java Basics - Anfänger-Themen 4
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Sortierte Listen Java Basics - Anfänger-Themen 4
L Datenstrukturen/ Listen Java Basics - Anfänger-Themen 17
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
L Listen und Felder Java Basics - Anfänger-Themen 2
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
R Arrays und Listen Java Basics - Anfänger-Themen 1
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
F Multidimensionale Listen Java Basics - Anfänger-Themen 3
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
T Objekte in Listen vererben Java Basics - Anfänger-Themen 3
A Klassen Klassen und Listen... Java Basics - Anfänger-Themen 5
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
C Listen Java Basics - Anfänger-Themen 3
C Zwei Listen verbinden Java Basics - Anfänger-Themen 1
C Zahlen merken mit Hilfe von Arrays/Listen Java Basics - Anfänger-Themen 2
E Feld von verketteten Listen Java Basics - Anfänger-Themen 11
T Überprüfung einer Aufgabe zu verketteten Listen Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
JarJarBigs Frage zu Listen Java Basics - Anfänger-Themen 2
N verkettete Listen Java Basics - Anfänger-Themen 4
O Listen sort-Methode Java Basics - Anfänger-Themen 1
I Listen sortieren bei mehreren Listen zu einer Java Basics - Anfänger-Themen 2
L Lineare Listen Java Basics - Anfänger-Themen 2
S Listen Objekte nach LocalDateTime sortieren Java Basics - Anfänger-Themen 2
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
A Sichtbarkeit in Methoden/Listen Java Basics - Anfänger-Themen 3
M verkettete Listen Java Basics - Anfänger-Themen 1
D Klausur Vorbereitung: Listen, Rekursion, Bäume & Vererbung Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
M Listen erstellen mit unterschiedlichen Reihenfolgen Java Basics - Anfänger-Themen 3
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
S Unsortierte Listen - Frage zur "Verkettung" Java Basics - Anfänger-Themen 1
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
P Listen Size stimmt nicht Java Basics - Anfänger-Themen 5
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
L Collections Objekte in Listen speichern Java Basics - Anfänger-Themen 3
G 2 Listen kombinieren und nach abc sortieren Java Basics - Anfänger-Themen 9
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
G Listen sortieren Java Basics - Anfänger-Themen 3
G Generic und Listen Java Basics - Anfänger-Themen 8
R SQL ähnlicher Filter für Java Listen Java Basics - Anfänger-Themen 2
Y Collections 4 Listen Java Basics - Anfänger-Themen 14
S OOP/ Listen...etc... Java Basics - Anfänger-Themen 14
E Listen Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
B Listen Java Basics - Anfänger-Themen 3
B eigene klasse in listen eintragen Java Basics - Anfänger-Themen 6
B Map per Listen Java Basics - Anfänger-Themen 2
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
Joew0815 Problem mit Listen: add() Java Basics - Anfänger-Themen 11
P Zeichenorientierte & Serialisierte Datenverarbeitung Listen Java Basics - Anfänger-Themen 8
E Listen und Generics Java Basics - Anfänger-Themen 9
L dynamisches erzeugen von array Listen Java Basics - Anfänger-Themen 7
E Listen und Duplikate Java Basics - Anfänger-Themen 2
R Hilfe bei Listen Java Basics - Anfänger-Themen 10
F Collections Liste von Listen Java Basics - Anfänger-Themen 21
walker23m C++ Listen iteratoren in Java umwandeln Java Basics - Anfänger-Themen 3
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
N Listen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben