package com.limegroup.gnutella.util; /** * this data structure is to be used in place of the * ArrayList in the LimitedList class. Even though * it is an array, it behaves like a list in how it * shifts its elements. */ public class LimitedArray { private int _size; private Object[] _array; public LimitedArray(int size) { _size = size; _array = new Object[_size]; } public Object[] toArray() {return _array;} public Object get(int index) { if (index > _size-1) /* should i check for index out of bounds */ return null; else return _array[index]; } public void remove(int index) { for (int i = index; i < _size-1; i++) { _array[i] = _array[i+1]; } _array[_size-1] = null; } /** * when you add at an index, all the others * elements have to shift down */ public void add(int index, Object elem) { /* shift all other elements down */ for (int i = _size-1; i > index; i--) { _array[i] = _array[i-1]; } _array[index] = elem; } }