将基本数组中的值添加到Set <string>

时间:2019-02-13 06:24:50

标签: java collections set

  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 :(得分:4)

我认为您可以先将数组转换为列表。也许像

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

答案 1 :(得分:3)

如果您进一步不想修改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);
}

答案 2 :(得分:2)

如果您可以使用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);
}

答案 3 :(得分:1)

您只需按照以下代码将array转换为Set

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