public class SetPlanesGeneric { //массив объектов, которые храним private final Object[] _places; //количество объектов в массиве public int Count() { return _places.length; } //конструктор public SetPlanesGeneric(int count) { _places = new Object[count]; } //добавление объекта в набор public int Insert(T plane) { return Insert(plane, 0); } //добавление объекта в набор на конкретную позицию public int Insert(T plane, int position) { // проверка позиции if (position >= _places.length || position < 0) { return -1; } //проверка, что элемент массива по этой позиции пустой, если нет, то if (_places[position] == null) { _places[position] = plane; return position; } //проверка, что после вставляемого элемента в массиве есть пустой элемент int findEmptyPos = -1; for (int i = position + 1; i < Count(); i++) { if (_places[i] == null) { findEmptyPos = i; break; } } if (findEmptyPos < 0) { return -1; } // вставка по позиции _places[position] = plane; return position; } //удаление объекта из набора с конкретной позиции public T Remove(int position) { // проверка позиции if (position >= _places.length || position < 0) { return null; } // удаление объекта из массива, присовив элементу массива значение null T temp = (T)_places[position]; _places[position] = null; return temp; } //получение объекта из набора по позиции public T Get(int position) { if (position >= _places.length || position < 0) { return null; } else if (_places[position] == null) { return null; } return (T)_places[position]; } }