kann Map mit entrySet() ausgeben aber nicht über eine Methode weitergeben.********************

R1DNA

Grünschnabel
Hallo zusammen,

also ich erstelle ein Produktkatalog die Erstellten Produkte werden in einer Map gespeichert siehe:
final Map<Integer, Produkt> idToProductMap = new HashMap<Integer, Produkt>();
das ist auch kein Probelm einzelne Produkte einzupflegen zu löschen oder ändern.

das Problem ist, die Liste die ich Hiermit ausgeben kann:

for (Entry<Integer, Produkt> e : catalogOne.entrySet()) {
System.out.println("==" + e.getKey() + e.getValue().showAllArticleData());
}


will ich über eine Methode weitergeben das funktioniert bei mir aber nicht :
public Set<Entry<Integer, Product>> getAllFromMap() {

return catalogOne.entrySet();
}


Ich verstehe nicht was oder wie der rückabe wert einer entrySet() aussehen soll und auch nicht warum er mir Set<Entry<Integer, Product>> vorschlägt, so bekomm ich eine leere Map.


------------------------------------------------------------------------------------------------------------------------------------------------
 

Anhänge

  • Produktkatalog.7z
    9,3 KB · Aufrufe: 11

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi R1DNA und herzlich willkommen hier im Forum,

ein etwas eigenartiker Aufbau der Klassen, aber ich hab den Fehler für den Fall gefunden.
Du greifst in der DisplayTextAndLists.listProducts() auf eine andere Instanz des TransportToCatalog zu, als beim hinzufügen / bearbeiten / leeren.

Wenn du für das gesammte Programm mit nur einem Katalog arbeiten willst (so sieht es zumindest aus), dann würde ich empfehlen aus dem TransportToCatalog ein Singleton zu machen.

Grüße,
BK
 

R1DNA

Grünschnabel
Danke für die schnelle Antwort.
Genau so war es gemeint. XD
Ja ich bin grad dabei JAVA zu lernen habe ein Duales studium für Angewandte Informatik begonnen.
Ich Probier das gleich mal aus ! Was würdest du den anderst machen?

Grüße,
R1DNA
Hi R1DNA und herzlich willkommen hier im Forum,

ein etwas eigenartiker Aufbau der Klassen, aber ich hab den Fehler für den Fall gefunden.
Du greifst in der DisplayTextAndLists.listProducts() auf eine andere Instanz des TransportToCatalog zu, als beim hinzufügen / bearbeiten / leeren.

Wenn du für das gesammte Programm mit nur einem Katalog arbeiten willst (so sieht es zumindest aus), dann würde ich empfehlen aus dem TransportToCatalog ein Singleton zu machen.

Grüße,
BK
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

nun ja, auf die schnelle ist mir aufgefallen, dass du keinerlei static Methoden hast, obwohl das bei manchen besser / einfacher wäre. Zum Beispiel die Klasse zur Ausgaben der Daten, diese musst du erst instanzieren, bevor du mit einer Methode da drin was ausgeben kannst. Diese Methode braucht aber keine Attribute der Klasse (das wäre schon einmal ein Hinweis auf eine statische Methode).

Zum anderen hast du alles in einem package. Versuche deinen Code sauber zu trennen. Alles was mit Benutzer-ein / -ausgaben zu tun hast, kannst du zum beispiel in das package "io" speichern. Die Datenverwaltung zum Beispiel in "data".

Hatte grad Zeit und dein Projekt mal umgebaut, so in der Art würde ich das speichern (siehe Anhang)

Grüße,
BK
 

Anhänge

  • Produktkatalog.zip
    5,5 KB · Aufrufe: 7