Коллекции объектов
This commit is contained in:
parent
b32311652f
commit
7fe1682f7b
@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace HoistingCrane.CollectionGenericObjects
|
||||||
|
{
|
||||||
|
internal interface ICollectionGenericObjects<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Колличество объектов в коллекции
|
||||||
|
/// </summary>
|
||||||
|
int Count { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Максимальная вместимость коллекции("гаража")
|
||||||
|
/// </summary>
|
||||||
|
int SetMaxCount { set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление элемента в коллекцию на свободную позицию
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj">Добавляемый объект</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
bool Insert(T obj);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление элемента в коллекцию на конкретное место
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj">Добовляемый объект</param>
|
||||||
|
/// <param name="pos">Позиция объекта</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
bool Insert(T obj, int pos);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Удаление конкретного элемента коллекции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pos">Номер позиции</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
bool Remove(int pos);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение элемента коллекции по индексу
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pos">Индекс элемента</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
T? Get(int pos);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,101 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace HoistingCrane.CollectionGenericObjects
|
||||||
|
{
|
||||||
|
internal class MassivGenericObjects<T> : ICollectionGenericObjects<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Создание массива типа <T>
|
||||||
|
/// </summary>
|
||||||
|
private T[] array;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор класса
|
||||||
|
/// </summary>
|
||||||
|
public MassivGenericObjects()
|
||||||
|
{
|
||||||
|
array = Array.Empty<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во элементов массива
|
||||||
|
/// </summary>
|
||||||
|
public int Count => array.Length;
|
||||||
|
|
||||||
|
public int SetMaxCount { set { if (value > 0) array = new T[value]; } }
|
||||||
|
|
||||||
|
public T? Get(int pos)
|
||||||
|
{
|
||||||
|
return array[pos];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Вставка элемента в свободную позицию(с начала)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool Insert(T obj)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (array[i] == null) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Вставка элемента в конкретную позицию
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="pos"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
public bool Insert(T obj, int pos)
|
||||||
|
{
|
||||||
|
bool flag = false;
|
||||||
|
if (array[pos] == null)
|
||||||
|
{
|
||||||
|
array[pos] = obj;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (array[pos] != null)
|
||||||
|
{
|
||||||
|
for(int i = pos; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (array[i] == null)
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
array[i] = obj;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(flag == false)
|
||||||
|
{
|
||||||
|
for(int i = pos; i > 0; i--)
|
||||||
|
{
|
||||||
|
if (array[i] == null)
|
||||||
|
{
|
||||||
|
array[i] = obj;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Remove(int pos)
|
||||||
|
{
|
||||||
|
if (array[pos] != null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user