Prüfen, ob ein Element in der Liste nicht existiert

blueJavaNoob

Neues Mitglied
Hallo Leute,

ich bin ein Java-Anfänger und sitze derzeit an einem Problem, bei dem mir bis jetzt nicht wirklich jemand helfen konnte. Und bevor ich meinen Code etc. poste, möchte ich erstmal wissen, ob mein Gedanke/Vorhaben überhaupt möglich ist.

Folgende Situation: Ich arbeite gerade an einem Kochbuch, wo ich Rezept speichern, auswählen etc. kann. Dann habe ich noch einen "Herstellen"-Button, wo ich dann meine Prüfstellen/Prüffunktionen aufrufe.

Jedes Rezept hat bestimmte Zutaten und diese müssen mit dem Lager verglichen werden. Sagen wir mal, Rezept A hat die Zutaten (A, B und C) und der Bestand in meinem Lager umfasst aber nur die Zutaten (A, D, E und Y). Und hier kann man schon mein Problem sehen. Ich kann problemlos Zutat A prüfen und ausgeben, ob ich genug davon habe oder nicht.

Und hier komme ich gleich zu meiner Frage: Wie kann ich prüfen und bspw. auf der Konsole ausgebe, dass Zutat B und C nicht vorhanden sind?

Die Zutaten des Rezeptes und Inhalte des Lagers werden in Listen abgespeichert und ich jage meine For-Schleifen über die Listen und überprüfe, ob sie gleich sind. Ich kann auch machen, dass ich sage, falls sie ungleich sind, aber dann bekomme ich die ganze Zutatenliste des Rezepts rausgehauen und das soll's halt nicht.


Ich hoffe ich habe mein Problem etwas verständlich ausgedrückt.

LG blueJavaNoob
 
Zuletzt bearbeitet:
Ich halte eine Liste denkbar ungeeignet für dein Vorhaben. Verwende lieber Maps. Sowohl fürs Lager als auch für die Zutatenliste. Wieso verwendest du denn ausgerechnet eine Liste?

Ungesehen davon stellt List auch die Methode contains und containsAll bereit, die du dir ja mal anschauen kannst.
 
Hallo, und danke für die schnelle Antwort.

Ich habe die Klassen Rezept und Zutat. Die einzelnen Zutaten eines Rezeptes werden bei mir auf eine Map gespeichert und diese Map wird bei mir dann in die Zutatenliste abgespeichert und dem jeweiligen Rezept zugeordnet. Und das Lager sieht bei mir wie folgt aus. Ich habe die Klasse Lager und diesem Lager wird bei mir ein Interface, wo Fässer abgespeichert werden, zugeordnet. Des Weiteren habe ich keine Klasse erstellt "MaxStore", wo ich die einzelnen Fässer mit einer HashMap sortiere und den gesamten Bestand des Lagers in einer Liste abspeicher.

Und keine Ahnung wieso ausgerechnet Listen. Hatte sich so irgendwie ergeben. Wollte zuerst "Stock"- von Salespoint verwenden, aber dann haben sie aus irgendwelchen Gründen diese Funktionalität aus der API entfernt.
Ah ja, was vielleicht noch wichtig wäre: ich arbeite bei meinem Projekt mit dem Spring-Framework und Thymeleaf.


Zu contains. Liefert es nicht das gleiche Ergebnis, wie equals?
Also er würde ja prüfen, ob etwas gleichen Inhalts vorhanden ist, und wenn ja, dann soll was getan.
Bei Zutat A gäbe es etwas zum vergleichen, aber bei den anderen doch nicht, oder irre ich mich?
 
Ich habe die Klassen Rezept und Zutat. Die einzelnen Zutaten eines Rezeptes werden bei mir auf eine Map gespeichert und diese Map wird bei mir dann in die Zutatenliste abgespeichert und dem jeweiligen Rezept zugeordnet. Und das Lager sieht bei mir wie folgt aus. Ich habe die Klasse Lager und diesem Lager wird bei mir ein Interface, wo Fässer abgespeichert werden, zugeordnet. Des Weiteren habe ich keine Klasse erstellt "MaxStore", wo ich die einzelnen Fässer mit einer HashMap sortiere und den gesamten Bestand des Lagers in einer Liste abspeicher.
Ehrlich gesagt, kann ich mir anhand deiner Beschreibung überhaupt nicht vorstellen, wie deine Einzelklassen und deren Zusammenspiel aussehen.

Und keine Ahnung wieso ausgerechnet Listen. Hatte sich so irgendwie ergeben. Wollte zuerst "Stock"- von Salespoint verwenden, aber dann haben sie aus irgendwelchen Gründen diese Funktionalität aus der API entfernt.
Ah ja, was vielleicht noch wichtig wäre: ich arbeite bei meinem Projekt mit dem Spring-Framework und Thymeleaf.
Das sind alles keine Java-Standardklassen. Keine Ahnung, wie man die am besten einsetzt.

Zu contains. Liefert es nicht das gleiche Ergebnis, wie equals?
Also er würde ja prüfen, ob etwas gleichen Inhalts vorhanden ist, und wenn ja, dann soll was getan.
Bei Zutat A gäbe es etwas zum vergleichen, aber bei den anderen doch nicht, oder irre ich mich?
Nein, list.contains(o) sollte in den seltensten Fällen dasselbe zurückliefern wie list.equals(o), es sei denn, list enthält eine Liste, die inhaltsgleich mit ihr ist. Keine Ahnung, ob sowas überhaupt möglich ist.
 
Zuletzt bearbeitet:

Zurück
Oben