731 votes

Le moyen le plus simple de convertir une liste en un ensemble? - Java

Le moyen le plus simple de convertir une liste en un ensemble? - En Java

1191voto

sepp2k Points 157757
Set<Foo> foo = new HashSet<Foo>(myList);

161voto

Spina Points 2769

Je suis d'accord avec sepp2k, mais il ya quelques autres détails qui comptent:

new HashSet<Foo>(myList);

vous donnera une des ménagères de jeu qui n'a pas de doublons. Dans ce cas, la duplication est identifié à l'aide de l' .méthode equals() sur l'objet. Ceci est fait en combinaison avec les .hashCode() de la méthode. (Pour en savoir plus sur l'égalité regarder ici)

Une alternative qui donne un ensemble trié est:

new TreeSet<Foo>(myList);

Cela fonctionne si Foo implémente Comparable. Si ce n'est pas le cas, vous souhaiterez peut-être utiliser un comparateur de:

Set<Foo> lSet = new TreeSet<Foo>(someComparator);
lSet.addAll(myList);

Cela dépend soit compareTo() (à partir de l'interface comparable) ou comparer() (à partir du comparateur) afin d'assurer l'unicité. Donc, si vous venez de soins sur l'originalité, utilisez le HashSet. Si vous êtes après le tri, puis envisager la TreeSet. (Rappelez-vous: l'optimisation de la plus tard!) Si l'efficacité dans le temps questions de l'utilisation d'un HashSet si l'efficacité de l'espace des questions, regardez TreeSet. Notez que plus efficace implémentations de Jeu et la Carte sont disponibles par le biais de Mine (et autres lieux).

74voto

Vitalii Fedorenko Points 17469

Si vous utilisez la bibliothèque Guava :

 Set<Foo> set = Sets.newHashSet(list);
 

ou mieux:

 Set<Foo> set = ImmutableSet.copyOf(list);
 

17voto

 Set<E> alphaSet  = new HashSet<E>(<your List>);
 

ou un exemple complet

 import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class ListToSet
{
    public static void main(String[] args)
    {
        List<String> alphaList = new ArrayList<String>();
        alphaList.add("A");
        alphaList.add("B");
        alphaList.add("C");
        alphaList.add("A");
        alphaList.add("B");
        System.out.println("List values .....");
        for (String alpha : alphaList)
        {
            System.out.println(alpha);
        }
        Set<String> alphaSet = new HashSet<String>(alphaList);
        System.out.println("\nSet values .....");
        for (String alpha : alphaSet)
        {
            System.out.println(alpha);
        }
    }
}
 

La source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X