public class PrimitivArrayList
{
private ListElement firstElement, lastElement;
private int amountElements;
public PrimitivArrayList()
{
this.firstElement = new ListElement(0, -1, null);
this.lastElement = this.firstElement;
}
private ListElement getElementAt(int index, int currentpos, ListElement element)
{
return currentpos == index ? element : getElementAt(index, ++currentpos, element.getNext());
}
public int get(int index)
{
return index >= this.getSize() ? -1 : getElementAt(index, 0, this.firstElement).getValue();
}
private void print(ListElement element)
{
System.out.println(element);
ListElement next = element.getNext();
if (next != null)
{
print(next);
}
}
public void add(int item)
{
if (firstElement.getValue() == -1)
{
firstElement.setValue(item);
}
else
{
ListElement newElement = new ListElement(lastElement.getPosition() + 1, item, null);
lastElement.setNext(newElement);
this.lastElement = newElement;
}
amountElements++;
}
public void printAll()
{
print(firstElement);
}
public int getSize()
{
return this.amountElements;
}
private class ListElement
{
private int value;
private ListElement next;
private int position;
public ListElement(int position, int value, ListElement next)
{
this.position = position;
this.value = value;
this.next = next;
}
public ListElement getNext()
{
return next;
}
public int getValue()
{
return value;
}
public void setNext(ListElement element)
{
next = element;
}
public void setValue(int i)
{
value = i;
}
public int getPosition()
{
return position;
}
public void setPosition(int i)
{
position = i;
}
public String toString()
{
return this.getClass() + " position " + this.getPosition() + " value " + this.getValue();
}
}
public static void main(String[] args)
{
PrimitivArrayList list = new PrimitivArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.printAll();
}
}