Коллекции объектов
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