97 lines
2.6 KiB
Java
97 lines
2.6 KiB
Java
import java.util.ArrayList;
|
||
import java.util.Iterator;
|
||
|
||
public class SetPlanesGeneric<T extends Object> implements Iterable<T>
|
||
{
|
||
//массив объектов, которые храним
|
||
private ArrayList<T> _places;
|
||
|
||
//максимальное кол-во элементов в списке
|
||
private final int _maxCount;
|
||
|
||
//количество объектов в массиве
|
||
public int Count()
|
||
{
|
||
return _places.size();
|
||
}
|
||
|
||
//конструктор
|
||
public SetPlanesGeneric(int count)
|
||
{
|
||
_maxCount = count;
|
||
_places = new ArrayList<>();
|
||
}
|
||
|
||
//добавление объекта в набор
|
||
public int Insert(T plane) throws StorageOverflowException {
|
||
return Insert(plane, 0);
|
||
}
|
||
|
||
//добавление объекта в набор на конкретную позицию
|
||
public int Insert(T plane, int position) throws StorageOverflowException {
|
||
//проверка на переполнение хранилища
|
||
if(_maxCount == Count())
|
||
{
|
||
throw new StorageOverflowException(_maxCount);
|
||
}
|
||
|
||
//проверка на корректность значения индекса
|
||
if (position >= _maxCount|| position < 0)
|
||
{
|
||
return -1;
|
||
}
|
||
|
||
_places.add(plane);
|
||
|
||
return position;
|
||
}
|
||
|
||
//удаление объекта из набора с конкретной позиции
|
||
public T Remove(int position) throws PlaneNotFoundException
|
||
{
|
||
// проверка позиции
|
||
if (position >= _places.size() || position < 0)
|
||
{
|
||
throw new PlaneNotFoundException(position);
|
||
}
|
||
|
||
if (_places.get(position) == null)
|
||
{
|
||
throw new PlaneNotFoundException(position);
|
||
}
|
||
|
||
// удаление объекта из массива, присовив элементу массива значение null
|
||
T temp = _places.get(position);
|
||
_places.remove(position);
|
||
|
||
return temp;
|
||
}
|
||
|
||
//получение объекта из набора по позиции
|
||
public T Get(int position)
|
||
{
|
||
if (position >= _maxCount || position < 0)
|
||
{
|
||
return null;
|
||
}
|
||
|
||
return _places.get(position);
|
||
}
|
||
|
||
public void Set(int position, T value) throws StorageOverflowException
|
||
{
|
||
if(position >= _maxCount || position < 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
Insert(value, position);
|
||
}
|
||
|
||
@Override
|
||
public Iterator<T> iterator()
|
||
{
|
||
return _places.iterator();
|
||
}
|
||
}
|