Java 方法将Arraylist转换为集合

Java 方法将Arraylist转换为集合,java,arraylist,set,Java,Arraylist,Set,我编写了以下方法以将Arraylist转换为集合: public static Set<Animal> toSet(){ Set<Animal> aniSet = new HashSet<Animal>(animals); return aniSet; } 我想这样做: public static Set<Animal> toSet(){ return HashSet<Animal>(animals); }

我编写了以下方法以将Arraylist转换为集合:

public static Set<Animal> toSet(){
    Set<Animal> aniSet = new HashSet<Animal>(animals);
    return aniSet;
}
我想这样做:

public static Set<Animal> toSet(){
    return HashSet<Animal>(animals);
}
为什么我会收到一条错误消息,说它找不到变量HashSet?我需要先存储变量吗


编辑:必须在我的哈希集之前添加新的。编码让我觉得自己很笨:“

这段代码有两个问题:

你忘记了动物必须来自某个地方;我认为第一个例子也不能编译;和 创建新哈希集时忘记使用new。 这可能是预期的行为:

public static <T> Set<T> toSet(Collection<? extends T> data){
    return new HashSet<T>(data);
}
然后,您可以通过以下方式调用它:

ArrayList<Animal> animals = new ArrayList<>();
//do something with the animals list
//...

Set<Animal> theSet = Foo.<Animal>toSet(animals);
通过使用泛型静态方法,可以使用任何类型调用它。通过使用Collections,你忘记了新事物以及动物必须来自某个地方这一事实。