繁体   English   中英

实现列表的实现方法到ArrayList

[英]Implement methods of an implemented List to an ArrayList

我知道该如何处理我的编程代码,但我只是不知道为什么我们必须这样做。

我的ArrayList类实现了List <E>接口。 这意味着我必须将List接口中的所有方法复制到ArrayList类。 这是为了防止我的ArrayList类说以下错误:“ ArrayList不是抽象的,并且不会覆盖抽象方法iterator(int)”错误。 有人可以向我详细解释吗?

另外:当我在NetBeans中使用自动更正时,它在每个方法之后都说“抛出新的UnsupportedOperationException(“尚不支持。”);“。 为什么?

这是我的代码:

public class ArrayList<E> implements List<E> {

    private E[] elementData;
    private int elementCount;
    private int capacityIncrement;
    private static final int INVALID_INDEX=-1;
    private static final int DEFAULT_CAPACITY = 100;

    public ArrayList() {

        capacityIncrement = 0;
        elementData = (E[]) new Object[DEFAULT_CAPACITY];
    }

    public ArrayList(int capacity) {

        this.capacityIncrement = 0;
        this.elementData = (E[]) new Object[capacity];
    }

    public ArrayList(int capacity, int increment) {

        this.capacityIncrement = increment;
        this.elementData = (E[]) new Object[capacity];
    }

    private static class ArrayListIterator<E> implements Iterator<E> {
        private ArrayListIterator(ArrayList c) {

            elementData = c;
        }

    public interface List<E> {

    public int size();

    public boolean isEmpty();

    public void clear();

    public boolean contains(E element);

    public void add(E element);

    public boolean remove(E element);

    public E elementAt(int index);

    public int indexOf(E element);

    public void insertElementAt(E element, int index);

    public void removeElementAt(int index);

    public void setElementAt(E element, int index);


    public void removeDuplicates();

    public void trimToSize();

    public Iterator<E> iterator();

    public Iterator<E> iterator(int index);

    public String toString();
}

由于实现了接口,因此必须实现它声明的所有方法(除非您的类是abstract )。 看一下有关继承的Java教程

您实现接口List因此您需要实现此接口中定义的所有方法。 异常表明您应该将方法iterator()添加到ArrayList

接口就像您(您的班级)签署的合同一样。 您必须履行合同中定义的所有内容,换句话说,您需要从接口实现每个(抽象)方法。

编辑:我清理了代码,现在唯一要做的就是用// TODO注释实现每个方法。

public class ArrayList<E> implements List<E> {
    private Object[] elementData;

    private int elementCount;
    private int capacityIncrement;

    private static final int INVALID_INDEX = -1;
    private static final int DEFAULT_CAPACITY = 100;

    public ArrayList() {
        capacityIncrement = 0;
        elementData = new Object[DEFAULT_CAPACITY];
    }

    public ArrayList(int capacity) {
        this.capacityIncrement = 0;
        this.elementData = new Object[capacity];
    }

    public ArrayList(int capacity, int increment) {
        this.capacityIncrement = increment;
        this.elementData = new Object[capacity];
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void clear() {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean contains(E element) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void add(E element) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean remove(E element) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public E elementAt(int index) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int indexOf(E element) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void insertElementAt(E element, int index) {
        // TODO Auto-generated method stub

    }

    @Override
    public void removeElementAt(int index) {
        // TODO Auto-generated method stub

    }

    @Override
    public void setElementAt(E element, int index) {
        // TODO Auto-generated method stub

    }

    @Override
    public void removeDuplicates() {
        // TODO Auto-generated method stub

    }

    @Override
    public void trimToSize() {
        // TODO Auto-generated method stub

    }

    @Override
    public Iterator<E> iterator() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Iterator<E> iterator(int index) {
        // TODO Auto-generated method stub
        return null;
    }

    protected class ArrayListIterator<T> implements Iterator<T> {
        private ArrayList<T> list;

        private ArrayListIterator(ArrayList<T> list) {
            this.list = list;
        }

        @Override
        public boolean hasNext() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public T next() {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public void remove() {
            // TODO Auto-generated method stub

        }
    }
}

interface List<T> {
    public int size();

    public boolean isEmpty();

    public void clear();

    public boolean contains(T element);

    public void add(T element);

    public boolean remove(T element);

    public T elementAt(int index);

    public int indexOf(T element);

    public void insertElementAt(T element, int index);

    public void removeElementAt(int index);

    public void setElementAt(T element, int index);

    public void removeDuplicates();

    public void trimToSize();

    public Iterator<T> iterator();

    public Iterator<T> iterator(int index);

    public String toString();
}

接口是一种约定,规定任何实现该类的类都将提供某些功能。 这是通过指定每个方法签名来完成的(但是,通常没有方法主体,因此没有实际的实现逻辑)。 因此,如果您有一个实现该接口的类,则必须为每个方法提供实现,以便您的类履行该合同。

因为您说的是类“ implements List”,所以它必须实现List接口中定义的所有方法。 接口就像是您的类的抽象规范,它指定类可以执行的操作(其方法),而不提供有关类所包含的内容/其工作方式的详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM