Methoden Equals Methode für Integer und Objekte überschreiben?

J

JavaExpInc

Mitglied
Hallo zusammen,

da ich leider noch keine Lösung für mein Problem so gefunden habe, stelle ich hier mal mein Problem. Ich habe ein Entitiy Event, welches eine Map<Integer, Post>Postlist sowie Set<User>Userlist beinhaltet.
Java:
Public Class Event
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "eventPost")
    @MapKey
    private Map<Integer, Post> postList;
    @ManyToMany
    @MapKey
    private Set<User> userList;

und einen Post
Java:
Public Class Post
 
    private int postId;
    private String content;
    private String header;
    private long creationDate;

Leider weiß ich nicht wie ich im Hinblick auf die postList und userList die Equals Methode überschreiben kann um diese später in Testzwecken vergleichen zu können. Meine momentane Equals Methode sieht so aus:

Java:
    @Override
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o == this) {
            return true;
        }
        if (!o.getClass().equals(getClass())) {
            return false;
        }
        Event that = (Event) o;
        return this.getEventId() == that.getEventId() && this.getCategory() == that.getCategory()
                && this.getDescription() == that.getDescription() && this.getEventName() == that.getEventName()
                && this.getCreationDate() == that.getCreationDate() && this.getAuthor().equals(that.getAuthor())
                && this.getEventDate() == that.getEventDate();
    }

nur diese berücksichtigt momentan noch keine postList und userList.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Hat Event eine ID?

Ansonsten: Map und Set implementieren beide auch equals, du kannst einfach an deren delegieren.
 
J

JavaExpInc

Mitglied
Hat Event eine ID?

Ansonsten: Map und Set implementieren beide auch equals, du kannst einfach an deren delegieren.
Ja event hat eine ID, ändert sich deshalb etwas? Wie kann ich denn weiter an Map und Set delegieren? Also ich habe das bei mir schon mit dem Author gemacht (der ja der User ist und dort habe ich equals überschrieben) nur ich habe ja keine Klasse Map und Set sondern hole mir die aus den Bibliotheken...
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Ja event hat eine ID, ändert sich deshalb etwas?
Es kann was ändern ;)

Bei Entitäten mit ID hängt IDentität üblicherweise nur von der ID ab. Man würde also nur die ID vergleichen, und alle anderen nicht.
Wenn du jetzt ein Event hast, ist es ja immer noch das gleiche Event, wenn ein Nutzer hinzugefügt wird. (oder analog: auch wenn dir drei Haare mehr wachsen, bist du weiterhin die gleiche Person)


Also ich habe das bei mir schon mit dem Author gemacht (der ja der User ist und dort habe ich equals überschrieben) nur ich habe ja keine Klasse Map und Set sondern hole mir die aus den Bibliotheken...

Map und Set haben alle passende equals, die musst du nur aufrufen ;)
(btw solltest du equals für alle Vergleiche nutzen, die keine primitiven Datentypen sind)
 
J

JavaExpInc

Mitglied
Es kann was ändern ;)

Bei Entitäten mit ID hängt IDentität üblicherweise nur von der ID ab. Man würde also nur die ID vergleichen, und alle anderen nicht.
Wenn du jetzt ein Event hast, ist es ja immer noch das gleiche Event, wenn ein Nutzer hinzugefügt wird. (oder analog: auch wenn dir drei Haare mehr wachsen, bist du weiterhin die gleiche Person)

Das macht Sinn, also müsste ich in meiner bisherige Equals Methode nur den PK überprüfen, bzw. generell müsste man somit nur den PK bei der equals Methode überprüfen oder? Also sähe es bei den Variablen so aus das ich nur this.getEventId() == that.getEventId() machen müsste oder?

Map und Set haben alle passende equals, die musst du nur aufrufen ;)
(btw solltest du equals für alle Vergleiche nutzen, die keine primitiven Datentypen sind)

Das Map und Set auch equals Methoden haben ist mir bekannt, jedoch weiß ich nicht wie das in meinem Fall hier jetzt aussehen soll. Ich kann sie ja nicht überschreiben da ich keine Klasse Map / Set ausprogrammiert habe. Oder kann ich das auch in der Equals Methode von Event machen die ich überschreibe? Falls ja, wie sähe so etwas nun aus?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Das macht Sinn, also müsste ich in meiner bisherige Equals Methode nur den PK überprüfen, bzw. generell müsste man somit nur den PK bei der equals Methode überprüfen oder? Also sähe es bei den Variablen so aus das ich nur this.getEventId() == that.getEventId() machen müsste oder?
Ja, genau. Ist die ID denn ein primitiver Datentyp?

Das Map und Set auch equals Methoden haben ist mir bekannt, jedoch weiß ich nicht wie das in meinem Fall hier jetzt aussehen soll. Ich kann sie ja nicht überschreiben da ich keine Klasse Map / Set ausprogrammiert habe. Oder kann ich das auch in der Equals Methode von Event machen die ich überschreibe? Falls ja, wie sähe so etwas nun aus?
Was willst du denn auch überschrieben? Du musst doch nur wissen, ob die beiden gleich sind:

Java:
this.postList.equals(that.postList)
 
J

JavaExpInc

Mitglied
Ja die ID ist ein Integer also ein primitiver Datentyp. Dann kann ich die restlichen Variablenvergleiche mit == ja wegmachen.

Achso ich habe gedacht das equals was von postList aufgerufen wird muss ich noch überschreiben. Also reicht das generell wenn ich bei Listen mit this.postList.equals(that.postList) überschreibe? Auch wenn dort Objekte drin sind wie in diesem Fall ein Post?
 
J

JavaExpInc

Mitglied
Ja, solange Post equals passend überschreibt.
Meine Equals Methode sieht bei Post momentan so aus:

Java:
    @Override
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o == this) {
            return true;
        }
        if (!o.getClass().equals(getClass())) {
            return false;
        }
        Post that = (Post) o;
        return this.getAuthor() == that.getAuthor() && this.getContent() == that.getContent()
                && this.getCreationDate() == that.getCreationDate() && this.getEventPost() == that.getEventPost()
                && this.getHeader() == that.getHeader() && this.getPostId() == that.getPostId();
    }

müsste daher ja passen oder? Und auch hier könnte ich da PostId wieder ein PK Integer ist nur diese überprüfen.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Bis auf die Vergleiche mit == sieht das passend aus.

Wenn es aber wieder eine Entität mit ID ist, sollte es reichen, diese zu vergleichen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
G Java equals() Methode Java Basics - Anfänger-Themen 9
O equals Methode möglichst effizient Java Basics - Anfänger-Themen 13
H equals methode Java Basics - Anfänger-Themen 1
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
H equals Methode Java Basics - Anfänger-Themen 1
S equals Methode bei String Java Basics - Anfänger-Themen 5
K Vererbung equals-Methode bei Vererbung abstrakter Klassen Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
J Methode equals() Java Basics - Anfänger-Themen 7
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
C 2 Objekte (mathematisch) vergleichen in der equals Methode Java Basics - Anfänger-Themen 10
C hilfe bei equals Methode - es geht ums Bestehen Java Basics - Anfänger-Themen 7
G equals-Methode Java Basics - Anfänger-Themen 4
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
lallmichnichtzu Methoden Überladen des .equals-Operators Java Basics - Anfänger-Themen 6
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
C Objekt equals Java Basics - Anfänger-Themen 2
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
F String equals NULL Problem Java Basics - Anfänger-Themen 4
D Auf equals von Vaterklasse zugreifen Java Basics - Anfänger-Themen 4
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
E Calender - Equals Problem Java Basics - Anfänger-Themen 14
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
A Probleme mit equals und get.Text Java Basics - Anfänger-Themen 12
S compareTo() und equals() Java Basics - Anfänger-Themen 6
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
K Cast bei equals Java Basics - Anfänger-Themen 2
T SQL equals Java Basics - Anfänger-Themen 4
NicoDeluxe Methoden Equals Methde Java Basics - Anfänger-Themen 3
D if block mit equals im rumpf Java Basics - Anfänger-Themen 11
K String - Equals Java Basics - Anfänger-Themen 2
J Klassen Warum ist (a.equals(b)) gleich (a==b)? Java Basics - Anfänger-Themen 13
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
S Verständnissfrage equals() Java Basics - Anfänger-Themen 2
R compareTo & equals Java Basics - Anfänger-Themen 10
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
W Stringvergleich mit equals Java Basics - Anfänger-Themen 13
C equals() Java Basics - Anfänger-Themen 4
D Problem mit string.equals bzw string.contains Java Basics - Anfänger-Themen 4
T Problem mit der while(!string.equals("x")) Java Basics - Anfänger-Themen 2
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
M Equals überschreiben Java Basics - Anfänger-Themen 3
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
K equals in Hashmap() Java Basics - Anfänger-Themen 4
B if equals(irgendeine Zahl+Buchstabe) Java Basics - Anfänger-Themen 6
T equals() und hashCode() Java Basics - Anfänger-Themen 7
D probs mit clone und equals Java Basics - Anfänger-Themen 10
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
N Vergleich per equals Java Basics - Anfänger-Themen 5
S comparable und equals Java Basics - Anfänger-Themen 7
M Frage zu Textvergleich (equals) Java Basics - Anfänger-Themen 8
1 Strings vergleichen mit equals, geht das kürzer? Java Basics - Anfänger-Themen 4
B Frage zu Funktion mit equals Java Basics - Anfänger-Themen 17
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
D "2010–03–12".equals( "2010-03-12" ) Java Basics - Anfänger-Themen 6
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
T Problem mit equals Java Basics - Anfänger-Themen 5
K Equals,Instanceof und "==" Java Basics - Anfänger-Themen 7
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
S equals vergleich Java Basics - Anfänger-Themen 10
H Equals hascode Java Basics - Anfänger-Themen 5
S Equals Downcast? Java Basics - Anfänger-Themen 11
D equals Vergleiche Java Basics - Anfänger-Themen 7
L String mit equals vergleichen Java Basics - Anfänger-Themen 6
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
F String equals null wird nicht angenommen. Java Basics - Anfänger-Themen 24
A Reihenfolge bei equals() Java Basics - Anfänger-Themen 2
P Toleranz bei equals Java Basics - Anfänger-Themen 4
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
D String#equals + String#charAt Java Basics - Anfänger-Themen 5
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
G mehrere Werte für .equals ? Java Basics - Anfänger-Themen 22
T [SOLVED] Java String equals funktioniert nicht Java Basics - Anfänger-Themen 5
B String.equals(Object) anstatt "=" Java Basics - Anfänger-Themen 3
R Vergleiche mit Equals(), hashCode() und == Java Basics - Anfänger-Themen 10
S gleichgleich vs equals Java Basics - Anfänger-Themen 3
U "gleich gleich" oder equals Java Basics - Anfänger-Themen 9
G Platzhalten bei equals ? Java Basics - Anfänger-Themen 3
S equals( mit mehreren möglichkeiten) Java Basics - Anfänger-Themen 18
N equals() Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Anzeige

Neue Themen


Oben