Objects und Optional in Java

Aufrufe: 271     Aktiv: 18.01.2021 um 14:34

0

Hallo zusammen

Verstehe den untenstehenden Code nicht. Optional ist dazu da, dass man nicht mehr if (x == null) throw Nullpointerexception wirft? Kann mir bitte den untenstehenden Code erklären? Wann braucht man einen Map.Entry was ist das?

enter image description here

Vielen Dank!!

Diese Frage melden
gefragt

Student, Punkte: 64

 
Kommentar schreiben
1 Antwort
1

Optional ist eine Klasse, mit der man ein Objekt vom Typ T "wrappen" kann. D. h. du kannst dem Optional Objekt ein Objekt vom Typ T geben und er speichert es für dich. Wenn du kein Objekt hast, dann kannst du einfach das "leere" Optional Objekt zurückgeben, d.h. du hast nie eine NullPointerException, weil du immer ein Optional Objekt hast.

Der Code, den du geschickt hast, macht folgendes:

Du hast eine Map namens "seatAssignment". Diese speichert einen String "seat" und das dazugehörige Person Objekt.

In der ersten Methode "getPersonAtSeat" nimmst du als Parameter den "seat" als String und schaust in der Map nach dem Key, welcher diesem "seat" zugeordnet ist. Der Key, also das Person-Objekt wird in ein Optional "gewrappt", da es sein könnte, dass es zu diesem "seat" noch kein Key gibt und man wie gesagt eine NullPointerException verhindern möchte. Ganz am Anfang wird noch eine Exception geworfen, falls die Eingabe nicht gültig ist.

In der anderen Methode "getSeatForPerson" nimmt man als Paramter das Person-Objekt und sucht in der Map nach dem jeweiligen Value, also dem zugehörigen "seat" String. Dazu geht man alle "Pairs" also Entrys der Map mit einer for-Schleife durch. Dafür gibt es in dem Interface Map eine Entry Klasse. Diese speichert immer ein Value und ein Key, die zusammen gehören. D. h. du kannst beim jedem Schleifendurchlauf schauen, ob der Entry.getKey() mit der Person übereinstimmt und dann den zugehörigen Entry.getValue() wieder in einem Optional "gewrappt" zurückgeben.

Nehmen wir zum Beispiel die folgende Map: {"1": Person1, "2": Person2, "3": Person3} ... dann gibt dir die Methode map.entrySet() folgendes Set zurück:

{ new Entry("1", Person1), new Entry("2", Person2), new Entry("3", Person3) }

... und darüber kannst du dann iterieren und auch auf die Values zugreifen, nicht nur auf die Keys der Map!

Diese Antwort melden
geantwortet

Schüler, Punkte: 385

 

Woww vielen Dank!! Map.entry bedeutet, dass die Key-Value Paare zusammengetan werden? Danach iteriert man über die Menge, damit man die passende Person mit dem dazugehörigen Sitz finden kann? Ist Map.Entry gleich eine forEach Schleife? Wie wird dies in der forEach Schleife geschrieben?

  ─   sayuri 18.01.2021 um 14:14

Ja einfach for-each-Schleife für eine Map, im Endeffekt.

  ─   daniel.kuenkel 18.01.2021 um 14:15

wie würde die for-each Schleife aussehen?

  ─   sayuri 18.01.2021 um 14:18

... so wie in der 2. Methode in deinem Code

  ─   daniel.kuenkel 18.01.2021 um 14:21

hahah ok !!!

  ─   sayuri 18.01.2021 um 14:26

In welchem Modul macht ihr das eigentlich?

  ─   daniel.kuenkel 18.01.2021 um 14:28

Programmierung 2

  ─   sayuri 18.01.2021 um 14:34

Kommentar schreiben