94 lines
2.4 KiB
Java
94 lines
2.4 KiB
Java
|
public class SetPlanesGeneric<T extends Object>
|
|||
|
{
|
|||
|
//массив объектов, которые храним
|
|||
|
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];
|
|||
|
}
|
|||
|
}
|