Assurez-vous que deux séquences non alignées correspondent aussi parfaitement que possible (Java)

Il y a pas mal de confirmations d'appariement entre des séquences dont l'ordre est inconnu.

Les tableaux obtenus à partir de DB sont souvent incertains. Je me suis demandé s'il serait possible d'exprimer une telle vérification de correspondance de tableau avec le moins de code possible. Je veux le faire proprement, donc la situation devrait être la suivante

Doit être un type qui peut être trié par Stream.sorted ()

Les types simples tels que String et Integer peuvent être triés avec Stream.sorted (). Cependant, ce n'est pas le cas. De plus, il n'y a pas de problème si vous définissez un comparateur.

Vérifié pour ne contenir aucun nul

NullPointerException.

Obtenez uniquement des correspondances, des incompatibilités

Inutile de dire ici

Code source

Sample.java


public boolean isEqualsList(List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted().toArray(), b.stream().sorted().toArray());
}

prime

Même si vous définissez un comparateur, il semble être à peine soigné.

Sample.java


public boolean isEqualsList(Comparator comp, List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted(comp).toArray(), b.stream().sorted(comp).toArray());
}

Épilogue

J'ai pu écrire en une phrase. C'est désagréable que toArray () soit Object [], mais ce n'est qu'une vérification de correspondance, donc il n'y a pas de problème.

Recommended Posts

Assurez-vous que deux séquences non alignées correspondent aussi parfaitement que possible (Java)
Évitez le calendrier Java autant que possible
Java, des tableaux pour débuter avec les débutants
[Traitement × Java] Comment utiliser les tableaux
Comment vérifier Java installé sur Mac