Einleitung
Eine einfache Implementation einer eigenen GenericArrayList in Java bietet der folgende Code.
package arraylist;
interface GenericList<E> {
E get(int idx); // retrieve element at index
void set(E el, int idx); // overwrite element at index
int size(); // get number of elements
void add(E el); // append to end
void remove(int idx); // remove at index
void insert(E el, int idx); // insert at index
}
public class GenericArrayList<E> implements GenericList<E>
{
E[] content;
int size;
public GenericArrayList(int capacity)
{
content = (E[]) new Object[capacity];
size = 0;
}
public int size()
{
return size;
}
public void add(E element)
{
if (size == content.length)
{
increaseCapacity();
}
content[size++] = element;
}
private void increaseCapacity()
{
E[] tmp = (E[]) new Object[size * 2 + 1];
for(int i = 0; i < content.length; i++)
{
tmp[i] = content[i];
}
content = tmp;
}
public void remove(int idx)
{
size--;
for(int i = idx; i < size; i++)
{
content[i] = content[i + 1];
}
}
public void insert(E d, int idx)
{
if (size == content.length)
{
increaseCapacity();
}
for(int i = size - 1; i >= idx; i--)
{
content[i + 1] = content[i];
}
content[idx] = d;
size++;
}
public void set(E el, int idx)
{
content[idx] = el;
}
public E get(int idx)
{
return content[idx];
}
}
Weitere Beiträge aus dieser Serie
- Binäre Suchbäume in der Informatik einfach erklärt
- Durchsuchen von Array-Listen - Lineare und Binäre Suche
- Sequentielle Datentypen
- Algorithmische Techniken - Brute Force, Greedy, Teile und Herrsche, Dynamische Programmierung und Backtracking
- Lazy Evaluation und Streams
- Die Liste als abstrakter Datentyp
- Korrektheitsbeweise von Klassen und Schleifen
- Der Graph als abstrakter Datentyp





