[JAVA] Verarbeitung, um zu überprüfen, ob "einige Felder dupliziert sind" aus der Bean-Liste

Java nach langer Zeit. Als ich gefragt wurde, konnte ich nicht daran denken.

Vorschlag 1: Ich werde mein Bestes mit einem dedizierten Komparator und TreeSet geben

Das erste, was ich mir ausgedacht habe, war, wie man einen Komparator für jedes Feld erstellt und Duplikate mit TreeSet entfernt (ich weiß nicht, was Duplikate sind).

https://wandbox.org/permlink/Jy1QULC9vOUBSmIp

Wenn die Anzahl der Felder zunimmt, fühlt es sich an, als würde man einen ternären Operator schreiben. Es ist jedoch erforderlich, den Komparator für jede Bean zu definieren. .. Und es besteht kein Zweifel, dass es von der Null Pointer Exception-Polizei getötet wird. Also habe ich darüber nachgedacht.

https://wandbox.org/permlink/PTMp9eDR7M5YeHS1

... Diese Methode scheint fehlerhaft zu sein und ich bin nicht sicher. Tatsächlich bin ich beim Schreiben viele Male auf die NullPointerException getreten.

Vorschlag 2: Schreiben Sie nur Getter und überlassen Sie den Vergleich List

Nachdem ich darüber nachgedacht hatte, was dieser Ärger war, kam ich auf die Idee, dass es notwendig ist, die zu vergleichenden Felder gleich auszuwählen und jedes zu vergleichen. Damit

--Schreibe einfach einen Getter, um die zu vergleichenden Felder zu erhalten

Ich dachte, wenn Sie dies tun, wird die Schwierigkeit des Vergleichs verringert. Wie wär es damit.

https://wandbox.org/permlink/TDiFmIy3GfL2EmB9

Andererseits möchte ich nicht jede Bohne einzeln schreiben, also möchte ich, dass die Bohne eine gute Methode hat.

Vorschlag 3: Ich möchte dies mit der Anmerkungsverarbeitung tun

Ist es nicht möglich, Schnittstellen und Methoden hinzuzufügen, indem Sie so etwas wie Lombok ausführen? Ich dachte. Ich gab jedoch auf, weil es notwendig schien, einige Nachforschungen anzustellen und die vorhandene Datei zu manipulieren, während ich den AST betrachtete, um ihn nicht zu zerstören.

Gibt es den besten Weg?

~~ Es tut mir leid, dass ich den Methodennamen im Fall einer Schlange geschrieben habe. ~~

Recommended Posts

Verarbeitung, um zu überprüfen, ob "einige Felder dupliziert sind" aus der Bean-Liste
So ändern Sie den Prozess in Abhängigkeit von der Liste, die gedrückt wird, wenn mehrere ListViews vorhanden sind
Überprüfen Sie, ob Ethereum-Transaktionen nicht im Block enthalten sind
Wenn Sie die Java-Entwicklungsumgebung von Eclipse aus ändern möchten
Beurteilen Sie, ob die zu vergleichenden Zeichenfolgen in Java identisch sind