Как создать коллекцию List, начиная данные в массиве? - PullRequest
0 голосов
/ 08 ноября 2010

Мне было дано задание создать реализацию универсальной коллекции на основе простого массива. Коллекция должна реализовывать интерфейс List. В настоящее время у меня есть:

import java.util.*;
import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {}
}

class MyCollection<T> implements List<T>{
    T[] tab;

    MyCollection() {
        this.tab = (T[])new Object[10];
    }

    public List subList(int from, int to){
        return new ArrayList();
    }

    public <T> T[] toArray(T[] t){}
    public T[] toArray(){}
    public ListIterator listIterator(){}
    public ListIterator listIterator(int i){}
    public Iterator iterator(){}
    public boolean contains(){}
    public boolean contains(Object o){}
    public boolean isEmpty(){}
    public int size(){}
    public int lastIndexOf(Object o){}
    public int indexOf(Object o){}
    public T remove(int i){}
    public boolean remove(Object o){}
    public void clear(){}
    public void add(int i, T t){}
    public boolean add(T t){}
    public T set(int i, T t ){}
    public T get(int i){}
    public boolean retainAll(Collection c){}
    public boolean removeAll(Collection c){}
    public boolean addAll(int i, Collection c){}
    public boolean addAll(Collection c){}
    public boolean containsAll(Collection c){}
}

Как я могу реализовать необходимые методы, если мои данные хранятся в массиве? Как например я могу написать listIterator для массива?

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

Вы можете проверить исходный код java.util.ArrayList для некоторых шаблонов реализации.

1 голос
/ 08 ноября 2010

Начните с простых методов (например, get и set).Затем перейдите к более сложным и посмотрите, сможете ли вы реализовать любой из них с точки зрения более простых.Если вы застряли, перейдите к другому методу - он может дать вам некоторые идеи о том, на котором вы застряли.

Итераторы, вероятно, будут самыми хитрыми, поэтому, возможно, оставьте их до последнего.Подсказка: итераторы, вероятно, должны быть внутренними классами;знать, где они находятся в списке;и иметь ссылку обратно на массив.

...