public class SetLocomotivesGeneric { private final T[] _places; public int Count() { return _places.length; } public SetLocomotivesGeneric(int count) { _places = (T[]) new Object[count]; } public boolean Insert (T locomotive) { return Insert(locomotive, 0); } public boolean Insert (T locomotive, int position) { if (position >= _places.length || position < 0) return false; if (_places[position] == null) { _places[position] = locomotive; return true; } int emptyEl = -1; for (int i = position + 1; i < Count(); i++) { if (_places[i] == null) emptyEl = i; break; } if (emptyEl == -1) { return false; } for (int i = emptyEl; i > position; i--) { _places[i] = _places[i - 1]; } _places[position] = locomotive; return true; } public boolean Remove (int position) { if (position >= _places.length || position < 0) return false; _places[position] = null; return true; } public T Get(int position) { if (position >= _places.length || position < 0) { return null; } return _places[position]; } }