3
votes

Ajouter des valeurs du tableau de base à Set

addAll
(java.util.Collection<? extends java.lang.String>)
in Set cannot be applied
to
(java.lang.String[])

2 commentaires

addAll prend une collection, pas un tableau. Essayez this.fields.addAll (Arrays.asList (s))


Le type de données de s varargs est un tableau de chaînes et vous souhaitez le collecter dans un hashset. C'est pourquoi vous voyez l'exception.


4 Réponses :


2
votes

Si vous ne souhaitez pas non plus modifier le Set , vous pouvez utiliser Set.of avec Java-9 + comme:

public void fields(String... s) {
    Collections.addAll(fields, s);
}

ou bien vous pouvez utiliser Collections.addAll comme dans:

public void fields(String... s) {
    this.fields = Set.of(s);
}


0 commentaires

3
votes

Je pense que vous pouvez d'abord convertir votre tableau en liste. Peut-être quelque chose comme

this.fields.addAll(Arrays.asList(s));


0 commentaires

1
votes

Vous convertissez simplement array en Set comme code ci-dessous.

String [] array = new String[] {"one","two","three","four","five"};
Set<String> set = new HashSet<String>(Arrays.asList(array));


0 commentaires

1
votes

Si vous pouvez utiliser google Guava, le code suivant peut vous aider

public void fields1(String... s) {
    Sets.union(fields,Sets.newHashSet(s)).copyInto(fields);
}

une autre méthode:

public void fields(String... s) {
    this.fields.addAll(Sets.newHashSet(s));
}


0 commentaires