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[])
有没有解决这个问题的好方法?
答案 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));