diff --git a/SetArtilleriesGeneric.java b/SetArtilleriesGeneric.java new file mode 100644 index 0000000..03d19a7 --- /dev/null +++ b/SetArtilleriesGeneric.java @@ -0,0 +1,70 @@ +public class SetArtilleriesGeneric { + private final Object[] _places; + + public int getCount() { + return _places.length; + } + + public SetArtilleriesGeneric(int count) { + _places = new Object[count]; + } + + public int Insert(T artillery) { + return Insert(artillery, 0); + } + + public int Insert(T artillery, int position) { + if (position < 0 || position >= getCount()) { + return -1; + } + + if (_places[position] == null) { + _places[position] = artillery; + return position; + } + + int firstNull = -1; + + for (int i = position + 1; i < getCount(); i++) + { + if (_places[i] == null) + { + firstNull = i; + break; + } + } + + if (firstNull == -1) + { + return -1; + } + + System.arraycopy(_places, position, _places, position + 1, firstNull - position); + + _places[position] = artillery; + return position; + } + + @SuppressWarnings("unchecked") + public T Remove(int position) { + if (position < 0 || position >= getCount()) + { + return null; + } + + var result = _places[position]; + + _places[position] = null; + + return (T) result; + } + + @SuppressWarnings("unchecked") + public T Get(int position) { + if (position < 0 || position >= getCount()) { + return null; + } + + return (T) _places[position]; + } +}