使用ArrayList实现Set集合

时间:2013-12-28 18:26:02

标签: java collections

我很难使用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

2 个答案:

答案 0 :(得分:4)

你不能将ArrayList强制转换为Set,它们在继承树中处于同一级别(就像兄弟一样),不确定你想通过这个来实现什么

<击> 如果要从HashSet中创建ArrayList,请使用构造函数

new HashSet<SomeType>(arrayListInstance);

<击>

正如@nacho所提到的,您需要实现Set接口并将您的实现命名为全名(例如ListBackedSetArraySet

如果要创建由ArrayList支持的Set的新实现,则需要保留唯一性属性,为此必须自定义add()addAll()和构造函数以避免重复

答案 1 :(得分:1)

您正在尝试将ArrayList投射到Set。这会产生异常。 在线

this.setList = (Set<E>) new ArrayList();