11.4 Тізім типіндегі құрылыммен жұмыстарды ұйымдастыру
Тізім типіндегі әр түрлі, құрылымдар болады. C# тілінде олар үшін арнайы List, ArrayList, LinkedList , т.б. кластар дайындалған. Объекттердің динамикалық массивтері болып келетін List және ArrayList кластары жиі қолданылады. (11.3, 11.4 кестелері).
11.3-кесте –ArrayList класының негізгі қасиеттері
Кластың қасиеті
|
Сипаттамасы
|
public virtual int Capacity {get;}
|
Осы қасиет оқу үшін ғана арналған, коллекция ағымдағы сыйымдылығын сақтайды.
|
public virtual int Count {get;};
|
Осы қасиет оқу үшін ғана арналған, коллекцияның ағымдағы ұзындығын сақтайды.
|
11.4-кесте – ArrayList класының негізгі әдістері
Кластың әдістері
|
Сипаттамасы
|
public static ArrayList (IList: List);
|
List коллекциясы негізінде ArrayList объектісі құрылады
|
public virtual int Add(Oblect Value);
|
Тізім соңына жаңа объектті қосады, оның индексін қайтарады.
|
public virtual viod AddRange (ICollection coll);
|
Тізім соңына бірнеше объекттерді қосады
|
public virtual int BinsrySearch(Qbject Value);
|
Сұрыпталған тізімде Value объектісін табады және оның индексін қайтарады. Егер табылмаса, теріс санды қайтарады.
|
public virtual bool Containse (Object Value);
|
Егер коллекцияда Value элементі бар болса, true қайтарылады.
|
public static ArrayList FixedSize(ArrayList AL);
|
Әдіс элементтерін өзгертуге болатын, бірақ қосуға немесе жоюға болмайтын объекттерді қайтарады,
|
public virtual IEnumerator GetEnumerator();
|
Объект үшін итераторды қайтарады.
|
public virtual ArrayList GetRange(int Indx, int Count);
|
Элементтер диапазонын қайтарады.
|
public virtual int IndexOf(Object Value);
|
Value мәні бар элемент индексін қайтарады.
|
public virtual void Insert (int Indx, Object Value);
|
Коллекцияның керекті Indx орнына Value элементін қосады.
|
public virtual void InsertRange(int Indx, IColliction col);
|
Элементтер диапазонын қосады
|
public virtual bool IsFixedSize{get;}
|
Егер объекттің белгіленген өлшемі болса, true қайтарылады.
|
public virtual bool IsReadOnly{get;}
|
Объектте оқуға ғана арналған элементтер болса , true қайтарылады.
|
public virtual int LastIndexOf(Object Value);
|
Коллекцияда соңғы рет кездесетін Valiue мәнінің индексін қайтарады.
|
public static ArrayList ReadOnly(ArrayList AL);
|
Коллекция элементтеріне оқуға ғана рұқсат беретін режімді орнатады.
|
public virtual void Remove (Object Value);
|
Коллекциядан мәні Value болатын бірінші элементті жояды.
|
public virtual void RemoveAt (int Indx);
|
Коллекциядан индексі Indx болатын элементті жояды.
|
public virtual void RemoveRange(int Indx, int count);
|
Коллекциядан индексі Indx болатын элементтен бастап count элементтерін жояды.
|
11.4-кестесінің жалғасы
Кластың әдістері
|
Сипаттамасы
|
public virtual Object this[int Indx]{set; get;}
|
Осы қасиет элементтерге индексі бойынша қатынасуға мүмкіндік береді
|
public static ArrayList Repeat(Object Value, int count);
|
Value элементі count рет қайталанатын коллекцияны қайтарады.
|
public virtual void Reverse();
|
Элементтердің ретін кері бағытқа өзгертеді.
|
public virtual void SetRange (int Indx, ICollection col);
|
Indx индексінен бастап col коллекциясын қосады.
|
public virtual void Sort();
|
Коллекцияны сұрыптайды.
|
public virtual void TrimToSize();
|
Коллекцияға элементтерінің санына тең болатын сыйымдылықты орнатады.
|
public virtual void Clear();
|
Коллекцияның барлық элементтерін жояды.
|
ArrayList коллекциясының алғашқы сыйымдылығы 16-ты элементке тең. Коллекцияны кеңейту кезінде оның сыйымдылығы екі есе үлкейеді және 32, 64, 128, т.б. құрайды. TrimToSize() әдісі қолданылмайтын элементтерді өшіреді.
Бағдарлама кодының мысалы:
using System;
using System.Collections;
using System.Text;
namespace ConsoleApplication1
{
struct Avto
{
public String Marka; //автомобильдің үлгісі
public String Voditel; // жүргізушінің аты-жөні
public int Stoim; // автомобильдің бағасы
public int God; // шығарылған жылы
}
class Program
{
public static int kol = 0;
public static Avto avto = new Avto();
static ArrayList Garaj = new ArrayList();
public static void addcpi()
{
int b;
int kol;
string buf;
Console.WriteLine("Avtomobil sani");
buf = Console.ReadLine();
kol = Convert.ToInt32(buf);
for (int i = 0; i < kol; i++)
{
Console.WriteLine("{0}-Avtomobildin ylgisin engiziniz", i + 1);
buf = Console.ReadLine();
avto.Marka = buf;
Console.WriteLine("{0}-Avtomobil zhyrgizyshinin ati-zhoni", i + 1);
buf = Console.ReadLine();
avto.Voditel = buf;
Console.WriteLine("{0}-Avtomobildin bagasi", i + 1);
buf = Console.ReadLine();
b = Convert.ToInt32(buf);
avto.Stoim = b;
Console.WriteLine("{0}-Avtomobildin shikkan zhili", i + 1);
buf = Console.ReadLine();
b = Convert.ToInt32(buf);
avto.God = b;
Garaj.Add(avto);
}
}
public static void printcpi()
{
Console.WriteLine("{0,20}, {1, 20}, {2, 15}, {3, 15}",
"Ylgisi", "Zhyrgizyshi ati-zhoni", "Avtom. bagasi", "Avtom. shikkan zhili");
foreach (Avto T in Garaj)
Console.WriteLine("{0,20}, {1, 20}, {2, 15}, {3, 15}",
T.Marka, T.Voditel, T.Stoim, T.God);
}
public static void ydalelemcpi()
{
int n;
string buf;
Console.WriteLine("Zhoilatin zhazba nomeri?");
buf = Console.ReadLine();
n = Convert.ToInt32(buf);
// элементті номері бойынша жоямыз
Garaj.RemoveAt(n);
}
static void Main()
{
// тізімді құрамыз және тоолтырамыз
addcpi();
// тізімді шығарамыз
printcpi();
// элементті номері бойынша жоямыз
ydalelemcpi();
// тізімді шығарамыз
printcpi();
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Avtomobil sani
3
1-Avtomobildin ylgisin engiziniz
Лада
1-Avtomobil zhyrgizyshinin ati-zhoni
Петров
1-Avtomobildin bagasi
2000
1-Avtomobildin shikkan zhili
2007
2-Avtomobildin ylgisin engiziniz
Фиат
2-Avtomobil zhyrgizyshinin ati-zhoni
Иванов
2-Avtomobildin bagasi
3000
2-Avtomobildin shikkan zhili
2008
3-Avtomobildin ylgisin engiziniz
БМВ
3-Avtomobil zhyrgizyshinin ati-zhoni
Сидоров
3-Avtomobildin bagasi
4000
3-Avtomobildin shikkan zhili
2006
Ylgisi, Zhyrgizyshi ati-zhoni, Avtom. bagasi, Avtom. shikkan zhili
Лада, Петров, 2000, 2007
Фиат, Иванов, 3000, 2008
БМВ, Сидоров, 4000, 2006
Zhoilatin zhazba nomeri?
1
Ylgisi, Zhyrgizyshi ati-zhoni, Avtom. bagasi, Avtom. shikkan zhili
Лада, Петров, 2000, 2007
БМВ, Сидоров, 4000, 2006
Достарыңызбен бөлісу: |