diff --git a/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs b/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
index faf079d..e8f7baa 100644
--- a/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
+++ b/ProjectLiner/ProjectLiner/CollectionGenericObjects/ICollectionGenericObjects.cs
@@ -21,16 +21,18 @@
/// Добавление объекта в коллекцию
///
/// Добавляемый объект
+ /// /// Сравнение двух объектов
/// true - вставка прошла удачно, false - вставка не удалась
- int Insert(T obj);
+ int Insert(T obj, IEqualityComparer? comparer = null);
///
/// Добавление объекта в коллекцию на конкретную позицию
///
/// Добавляемый объект
/// Позиция
+ /// /// Сравнение двух объектов
/// true - вставка прошла удачно, false - вставка не удалась
- int Insert(T obj, int position);
+ int Insert(T obj, int position, IEqualityComparer? comparer = null);
///
/// Удаление объекта из коллекции с конкретной позиции
@@ -56,5 +58,11 @@
///
/// Поэлементый вывод элементов коллекции
IEnumerable GetItems();
+
+ ///
+ /// Сортировка коллекции
+ ///
+ ///
+ void CollectionSort(IComparer comparer);
}
}
\ No newline at end of file
diff --git a/ProjectLiner/ProjectLiner/Drawnings/DrawningLinerEqutables.cs b/ProjectLiner/ProjectLiner/Drawnings/DrawningLinerEqutables.cs
new file mode 100644
index 0000000..f1cbb56
--- /dev/null
+++ b/ProjectLiner/ProjectLiner/Drawnings/DrawningLinerEqutables.cs
@@ -0,0 +1,71 @@
+using ProjectLiner.Drawnings;
+using ProjectLiner.Entities;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+///
+/// Реализация сравнения двух объектов класса-прорисовки
+///
+public class DrawningLinerEqutables : IEqualityComparer
+{
+ public bool Equals(DrawningCommonLiner x, DrawningCommonLiner? y)
+ {
+ if (x == null || x.EntityCommonLiner == null)
+ {
+ return false;
+ }
+ if (y == null || y.EntityCommonLiner == null)
+ {
+ return false;
+ }
+ if (x.GetType().Name != y.GetType().Name)
+ {
+ return false;
+ }
+ if (x.EntityCommonLiner.Speed != y.EntityCommonLiner.Speed)
+ {
+ return false;
+ }
+ if (x.EntityCommonLiner.Weight != y.EntityCommonLiner.Weight)
+ {
+ return false;
+ }
+ if (x.EntityCommonLiner.BodyColor != y.EntityCommonLiner.BodyColor)
+ {
+ return false;
+ }
+ if (x is DrawningLiner && y is DrawningLiner)
+ {
+ if (((EntityLiner)x.EntityCommonLiner).AdditionalColor !=
+ ((EntityLiner)y.EntityCommonLiner).AdditionalColor)
+ {
+ return false;
+ }
+ if (((EntityLiner)x.EntityCommonLiner).Boats !=
+ ((EntityLiner)y.EntityCommonLiner).Boats)
+ {
+ return false;
+ }
+ if (((EntityLiner)x.EntityCommonLiner).Anchor !=
+ ((EntityLiner)y.EntityCommonLiner).Anchor)
+ {
+ return false;
+ }
+ if (((EntityLiner)x.EntityCommonLiner).Pipe !=
+ ((EntityLiner)y.EntityCommonLiner).Pipe)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public int GetHashCode([DisallowNull] DrawningCommonLiner obj)
+ {
+ return obj.GetHashCode();
+ }
+}
\ No newline at end of file