Добавить значения из базового массива в Set <String> - PullRequest
0 голосов
/ 13 февраля 2019
  private Set<String> fields = new HashSet<>();

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

Не компилируется, говоря, что:

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

Есть ли хороший способ обойти это?

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Если вы можете использовать Google Guava, следующий код может помочь вам

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

другой метод:

public void fields1(String... s) {
    Sets.union(fields,Sets.newHashSet(s)).copyInto(fields);
}
0 голосов
/ 13 февраля 2019

Я думаю, вы можете сначала преобразовать свой массив в список.Может быть, что-то вроде

this.fields.addAll(Arrays.asList(s));
0 голосов
/ 13 февраля 2019

Вы просто конвертируете array в Set, как показано ниже.

String [] array = new String[] {"one","two","three","four","five"};
Set<String> set = new HashSet<String>(Arrays.asList(array));
0 голосов
/ 13 февраля 2019

Если вы больше не хотите изменять Set, вы можете использовать Set.of с Java-9 + как:

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

или вы можете использоватьCollections.addAll как в:

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