Fragen zu einer Methode

Guten Tag.

Ich lerne in meiner Freizeit Java und gehe paar Übungsaufgaben durch. Nun bin ich auf diese Methode gestoßen und komme garnicht mehr weiter.

public boolean isEqual(ProductList other) {
if ( other.size() != size() ) return false;
if ( size() == 0 ) return true;
for ( int p = 0; p < size(); p++ ) {
Product otherProd = other.findProduct(products[p].getName());
if ( otherProd.getNumItems() != products[p].getNumItems() ) return false;
}
return true;
}

Kann mir jemand erklären, warum diese Methode die Gleichheit zweier Produktlisten ermittelt?

Vielen Dank!
 
Also wenn man den Code ansieht (BTW: Code bitte immer in Code-Tags posten, also im Editor Menü die "..." mit dem Pfeil nach unten nutzen....), dann sieht man diverse Dinge. Ganz genau im Detail kann man aber nicht alles sagen, aber einiges kann man erkennen:
Java:
public boolean isEqual(ProductList other) {
  if ( other.size() != size() ) return false; // Wenn die Listen unterschiedlich viele Elemente haben, dann sind diese nicht gleich!
  if ( size() == 0 ) return true; // Die Listen sind gleich lang, sonst wären wir nicht hier angekommen. Und die Länger ist 0, also beide Listen sind leer => Sie sind gleich!
    
  for ( int p = 0; p < size(); p++ ) {
    // Jetzt gehen wir alle Elemente der Liste durch...
      
    Product otherProd = other.findProduct(products[p].getName());
    // Wir holen uns das element - wobei ich mich frage, was passiert, wenn das Produkt mit dem Namen nicht existiert?
    // Ich hätte ein if (otherProduct == null) return false; zuerst erwartet um eine NPE zu vermeiden.
    if ( otherProd.getNumItems() != products[p].getNumItems() ) return false; // Hier findet jetzt der Vergleich der Produkte statt. Da wir die Produkte nicht kennen, können wir nicht sagen, ob dies richtig oder falsch ist.
  }
  return true;
}
Generell hätte ich halt auch erwartet, dass man die equals Methode überschrieben hätte und dass man dann Product mit equals vergleichen kann. Dann wäre etwas in der Art in der Schleife:
Java:
  for ( int p = 0; p < size(); p++ ) {
    if (!products[p].equals(other.findProduct(products[p].getName())) return false;
  }
  return true;
}
Da würde dann geprüft, dass jedes Produkt auch in der anderen Liste entsprechend vorhanden ist...
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben