[JAVA] Traitement pour vérifier si "certains champs sont dupliqués" à partir de la liste des haricots

Java après une longue période. Quand on m'a demandé, je ne pouvais pas y penser.

Proposition 1: je ferai de mon mieux avec un comparateur dédié et un TreeSet

La première chose que j'ai trouvée était de savoir comment créer un comparateur pour n'importe quel champ et éliminer les doublons avec TreeSet (je ne sais pas ce qui est dupliqué).

https://wandbox.org/permlink/Jy1QULC9vOUBSmIp

Lorsque le nombre de champs augmente, on a l'impression d'écrire un opérateur ternaire. Cependant, il est nécessaire de définir Comparator pour chaque bean. .. Et il ne fait aucun doute qu'il sera tué par la police d'exception Null Pointer. Alors j'ai réfléchi.

https://wandbox.org/permlink/PTMp9eDR7M5YeHS1

... Cette méthode semble boguée et je ne suis pas sûr. En fait, j'ai marché sur l'exception NullPointerException plusieurs fois en écrivant.

Proposition 2: n'écrivez que getter et laissez la comparaison dans List

Après avoir réfléchi à ce qu'était cette gêne, j'ai eu l'idée qu'il fallait sélectionner les champs à comparer par égaux et comparer chacun. Alors

--Écrire juste écrire un getter pour obtenir les champs à comparer

Je pensais que si vous faites cela, les problèmes de comparaison seront réduits. Et à propos de ça.

https://wandbox.org/permlink/TDiFmIy3GfL2EmB9

D'un autre côté, je ne veux pas écrire chaque bean un par un, donc je veux que le bean ait une bonne méthode.

Proposition 3: je veux le faire avec le traitement des annotations

N'est-il pas possible d'ajouter des interfaces et des méthodes en faisant quelque chose comme lombok? J'ai pensé. Cependant, j'ai abandonné car il me semblait nécessaire de faire des recherches et de falsifier le fichier existant en regardant l'AST pour ne pas le détruire.

Y a-t-il le meilleur moyen?

~~ Je suis désolé d'avoir écrit le nom de la méthode dans le cas du serpent. ~~

Recommended Posts

Traitement pour vérifier si "certains champs sont dupliqués" à partir de la liste des haricots
Comment changer le processus en fonction de la liste appuyée lorsqu'il y a plusieurs ListViews
Vérifiez si les transactions Ethereum ne sont pas incluses dans le bloc
Si vous souhaitez modifier l'environnement de développement Java d'Eclipse
Juger si les chaînes de caractères à comparer sont les mêmes en Java