Comment puis-je comparer les deux tableau liste pour l'égalité avec un comparateur?

Pour être plus précis, j'ai deux listes:

List<SystemUserWithNameAndId> list1;
List<SystemUserWithNameAndId> list2;

Je veux vérifier s'ils contiennent les mêmes utilisateurs du système et la commande n'est pas un problème. J'ai essayé d'utiliser un comparateur pour les trier d'abord et ensuite de vérifier si elles sont équivalentes à l'aide de la méthode equals() de listes. Mais je ne veux pas surcharger la méthode equals pour SystemUserWithNameAndId et je me demandais si je pouvais utiliser le comparateur que j'ai créé pour le tri (ou similaire) pour vérifier l'égalité, sans explicitement itération sur les listes après le tri.

Comparator<SystemUserWithNameAndId> systemUserComparator = new Comparator<SystemUserWithNameAndId>()
    {

        @Override
        public int compare(SystemUserWithNameAndId systemUser1, SystemUserWithNameAndId systemUser2)
        {
            final int systemUserId1 = systemUser1.getSystemUserId();
            final int systemUserId2 = systemUser2.getSystemUserId();

            return systemUserId1 == systemUserId2 
                    ? 0
                    : systemUserId1 - systemUserId2;
        }
    };

    Collections.sort(systemUsers1, systemUserComparator);
    Collections.sort(systemUsers2, systemUserComparator);

    return systemUsers1.equals(systemUsers2);

Idéalement, je veux être en mesure de dire,

CollectionUtils.isEqualCollections(systemUsers1, systemUsers2, someCustomComparator);
Pourquoi ne voulez-vous pas remplacer SystemUserWithNameAndId.equals()? Avez-vous déjà remplacé?
Ou vous pourriez faire un SystemUsersList qui s'étend de la Liste et de remplacer des égaux, alors que vous pourriez appeler: list1.equals(liste 2);
Le code que j'ai posté est une partie d'une classe de test et de la façon dont je suis la comparaison de deux SystemUserWithNameAndId objets n'est pas la méthode par défaut de les comparer.
Êtes-vous à l'aide de Java 8?
Je voudrais répondre, mais la question n'est pas encore claire. Est l'OP qui veulent tester si les deux listes contiennent les mêmes éléments selon la Comparator (comme JBNizet a assumé), ou est le Comparator juste un moyen de tester si les deux listes contiennent les mêmes éléments à l'égard de equals? Dans la question, les OP trie la liste en utilisant Comparator et vérifie ensuite si les listes sont les mêmes en comparant les éléments avec equals(), qui n'a aucun sens.

OriginalL'auteur Bruce Wayne | 2015-05-07