我很难使用arrayList实现set集合。 我不想使用HashSet。我希望有人解释我,为什么它不起作用
set.java:
public class set<E> {
Set <E> setList;
ArrayList<E> elementList;
public set(){
this.setList = (Set<E>) new ArrayList();
}
public set(E[] inputArray){
super();
for(E element: inputArray)
setList.add( element);
}
我的main.java:
Integer a[]= {4,2,9,2,2,2,52};
set aSet = new set(a);
System.out.println(aSet.toString());
我收到错误:
java.util.ArrayList cannot be cast to java.util.Set
答案 0 :(得分:4)
你不能将ArrayList
强制转换为Set
,它们在继承树中处于同一级别(就像兄弟一样),不确定你想通过这个来实现什么
<击>
如果要从HashSet
中创建ArrayList
,请使用构造函数
new HashSet<SomeType>(arrayListInstance);
击> <击> 撞击>
正如@nacho所提到的,您需要实现Set
接口并将您的实现命名为全名(例如ListBackedSet
或ArraySet
)
如果要创建由ArrayList
支持的Set的新实现,则需要保留唯一性属性,为此必须自定义add()
,addAll()
和构造函数以避免重复
答案 1 :(得分:1)
您正在尝试将ArrayList
投射到Set
。这会产生异常。
在线
this.setList = (Set<E>) new ArrayList();