Meilleur moyen de fusionner et de supprimer des doublons de plusieurs listes en Java
J'ai une situation où je vais recevoir 2+ ArrayList<Widget>
et j'ai besoin d'être en mesure de fusionner toutes les listes et supprimez tous les doublons de Widget
de sorte que je me retrouve avec seulement 1 ArrayList<Widget>
qui contient tous les Widget
s de toutes les listes fusionnées, mais sans les doublons.
Assumer Widget
a un substituée equals
méthode qui peut être utilisé pour déterminer si deux Widget
s sont des doublons, mais il peut y avoir une meilleure façon:
public ArrayList<Widget> mergeAndRemoveDupes(ArrayList<Widget> widgets...) {
//???
}
La recherche de la plus algorithmiquement moyen efficace d'y parvenir. Je suis heureux de l'utilisation d'Apache Commons ou toute autre source ouverte libs qui pourrait m'aider aussi! Merci à l'avance!
source d'informationauteur IAmYourFaja
Vous devez vous connecter pour publier un commentaire.
Pour chaque
ArrayList<Widget>
ajouter chaque élément à unSet<Widget>
(HashSet
ouTreeSet
selon qu'ils peuvent être commandés en quelque sorte, ou sont hashable) en utilisantaddAll
. Les ensembles contiennent pas de doublons par défaut.Vous pouvez convertir cette
Set
de retour dans un(Array)List
si vous devez à la fin.Noter que vous devrez mettre en œuvre
hashCode
pour votreWidget
classe, si vous décidez d'utiliser unHashSet
mais si vous avez un substituéeequals,
vous devriez faire de toute façon.Edit: Voici un exemple:
Si vous souhaitez utiliser un
TreeSet
mais ne veulent pas mettre en œuvreComparable<T>
sur votreWidget
de classe, vous pouvez donner à l'ensemble lui-même unComparator
objet:Je voudrais faire de cette façon
Utilisation
Set
Classe De Collection,Maintenant ici Jeu de supprimer tous les doublons de valeurs à partir de votre liste de tableaux.