java - texte - manuel css




Ajouter des éléments de deux ensembles (3)

Comment puis-je ajouter des éléments de deux ensembles?

If there's a set one (1, 3, 6, 8)
And a set two (2, 4, 6, 8)

Comment puis-je les éléments de ces deux ensemble?

Output should be (1, 2, 3, 4, 6, 8)

Voici ce que j'ai essayé:

Set<Integer> one = new HashSet();
one.add(1);
one.add(3);
// and so on
Set<Integer> two = new HashSet();
two.add(2);
two.add(4);
// and so on
Set<Integer> newSet = new HashSet();
newSet.add(one);
newSet.add(two);

return newSet;

Et cela ne fonctionne pas, car la méthode add ne fonctionne que pour un seul entier, pas une collection d'entiers. Y at-il une méthode où je peux ajouter deux ensembles ensemble?

Je dois aussi retourner l'ensemble. Comment je fais ça?


Ou utilisez alternativement une ArrayList triée:

ArrayList<Integer> list = new ArrayList<Integer>(one);
list.addAll(two);
Collections.sort(list);

Utilisez Set.addAll()

Set<Integer> one = new HashSet<Integer>();
Set<Integer> two = new HashSet<Integer>();
Set<Integer> newSet = new HashSet<Integer>(one);
newSet.addAll(two);

En outre, vous devez taper vos constructeurs (comme ci-dessus).

Pour en faire une méthode, essayez ceci:

public static Set<Integer> addTwoSets(Set<Integer> one, Set<Integer> two) {
    Set<Integer> newSet = new HashSet<Integer>(one);
    newSet.addAll(two);
    return newSet;
}

En fait, allons-y complètement ... Voici une méthode qui prendra n'importe quel nombre de collections de n'importe quel type qui étend le type désiré, et les fusionne en un seul ensemble:

public static <T> Set<T> merge(Collection<? extends T>... collections) {
    Set<T> newSet = new HashSet<T>();
    for (Collection<? extends T> collection : collections)
        newSet.addAll(collection);
    return newSet;
}

Comme Bohemian l'a mentionné , la meilleure réponse est d'utiliser Set.addAll (). Gardez juste à l'esprit que, si cela ne vous dérange pas d'écraser un de vos ensembles, il est plus efficace (du moins du point de vue du développeur: P) d'ajouter un ensemble directement à un autre ensemble:

one.addAll(two);




set