diff --git a/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/Generics/SetGeneric.cs b/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/Generics/SetGeneric.cs index c8b77f0..04677c0 100644 --- a/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/Generics/SetGeneric.cs +++ b/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/PIbd-23_Ivanov_V.N._DoubleDeckerBus._Base/Generics/SetGeneric.cs @@ -39,18 +39,24 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics _places = new List(count); } + /// + /// Сортировка набора объектов + /// + /// + public void SortSet(IComparer comparer) => _places.Sort(comparer); + /// /// Добавление объекта в набор /// /// Добавляемый автобус /// - public void Insert(T bus) + public void Insert(T bus, IEqualityComparer? equal = null) { if (_places.Count == _maxCount) { throw new StorageOverflowException(_maxCount); } - Insert(bus, 0); + Insert(bus, 0, equal); } /// @@ -59,7 +65,7 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics /// Добавляемый автобус /// Позиция /// - public void Insert(T bus, int position) + public void Insert(T bus, int position, IEqualityComparer? equal = null) { if (_places.Count == _maxCount) { @@ -69,6 +75,13 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics { throw new Exception("Неверная позиция для вставки"); } + if (equal != null) + { + if (_places.Contains(bus, equal)) + { + throw new ArgumentException(nameof(bus)); + } + } _places.Insert(position, bus); } @@ -79,7 +92,7 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics /// public void Remove(int position) { - if (position < 0 || position >= Count) + if (!(position >= 0 && position < Count)) { throw new BusNotFoundException(position); } @@ -96,7 +109,7 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics { get { - if (position < 0 || position >= _maxCount) + if (!(position >= 0 && position < Count)) { return null; } @@ -109,9 +122,7 @@ namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base.Generics { return; } - _places.Insert(position, value); - return; } }