import java.util.Arrays;

public class MyArrayList
{
    private Object[] elementData;
    private int size;

    public MyArrayList(int startKapazitaet)
    {
        if (startKapazitaet <= 0)
            throw new IllegalArgumentException
            ("Ungueltige Startkapazitaet: " + startKapazitaet);

        elementData = new Object[startKapazitaet];
        size = 0;
    }

    public MyArrayList()
    {
        this(10);
    }

    public int size()
    {
        return size;
    }

    public int capacity()
    {
        return elementData.length;
    }

    public void add(Object element)
    {
        if (element == null)
            throw new IllegalArgumentException("Element ist null.");

        if (size >= elementData.length)
            grow();

        elementData[size] = element;
        size++;
    }

    private void grow()
    {
        int alteKapazitaet = elementData.length;
        int neueKapazitaet = alteKapazitaet + alteKapazitaet / 2;  

        if (neueKapazitaet == alteKapazitaet)
            neueKapazitaet = alteKapazitaet + 1;

        Object[] neuesArray = new Object[neueKapazitaet];
        for (int i=0; i < alteKapazitaet; i++)
            neuesArray[i] = elementData[i];
        elementData = neuesArray;

        // elementData = Arrays.copyOf(elementData, neueKapazitaet);
    }    
}