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 Widgets 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 Widgets 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