Le moyen le plus simple de convertir une liste en un ensemble? - En Java
Réponses
Trop de publicités?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).
Si vous utilisez la bibliothèque Guava :
Set<Foo> set = Sets.newHashSet(list);
ou mieux:
Set<Foo> set = ImmutableSet.copyOf(list);
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);
}
}
}