PIbd-21_Eliseev_E.E._Airbus.../Project/src/SetPlanesGeneric.java

100 lines
2.5 KiB
Java
Raw Normal View History

2022-11-05 21:26:27 +04:00
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)
{
//проверка на корректность значения индекса
2022-11-05 21:26:27 +04:00
if (position >= _places.length || position < 0)
{
return -1;
}
//проверка ячейки на пустоту
2022-11-05 21:26:27 +04:00
if (_places[position] == null)
{
_places[position] = plane;
2022-11-05 21:26:27 +04:00
return position;
}
//поиск первой свободной ячейки
int _emptyPositionIndex = -1;
2022-11-05 21:26:27 +04:00
for (int i = position + 1; i < Count(); i++)
{
if (_places[i] == null)
{
_emptyPositionIndex = i;
2022-11-05 21:26:27 +04:00
break;
}
}
//есла пустых ячеек нет
if (_emptyPositionIndex < 0)
2022-11-05 21:26:27 +04:00
{
return -1;
}
//сдвиг объектов
for (int i = _emptyPositionIndex; i > position; i--)
{
_places[i] = _places[i - 1];
}
2022-11-05 21:26:27 +04:00
_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];
}
}