Collections (ArrayList)

მარტივად რომ ვთქვათ კოლექცია არის კლასი მასივის თვისებებით ოღონთ  გაცილებით დატვირთული ლოგიკით და ფუნქციონალურობით.   ანუ მასივი წარმოადგენს ობიექტების ჯგუფს, ერთ მთლიანობას (როგორც ცალკეული ობიექტი) და თუ გვინდა მაგათად შევცვალოთ მასივის ზომა ეს უკვე პრობლემაა რადგან მასივის ზომა ფიქსირებულია და ერთადერთი მეთოდი ამის გასაკეთებლათ იქნება ახალი სასურველი ზომის მასივის შექმნა და მნიშვნელობების გადატანით მასში. გარდა ამისა შეიძლება დაგვჭირდეს მასივის ელემენტების სორტირება (თუ ფიქრობთ რომ ეს თვისებები აქვს უკვე მასივს ეს იმიტომ, რომ დეფოლდათ C# ში მასივები დაკავშირებულია Array კლასთან, რომელსაც უკვე გააჩნია შესაბამისი ფუნქციები) და სხვა მრავალი მოქმედებები. სწორედ ამისთვისაა C#–ში კოლექციები, რომლებშიც ჩადებულია მრავალი ლოგიკა მასივებთან სამუშაოთ, პირველრიგში რაც უნდა ითქვას, რომ მასივისგან განსხვავებით კოლექცია ერთგანზომილებიანია. რა ხდება თვითონ კოლექციის შიგნით, როგორც ავღნიშნეთ ეს არის კლასი, რომელშიც თავიდანვე შექმნილია მასივი და სხვადასხვა დანიშნულების ფუნქციები, ხოლო მასივზე მიმართვა ხდება მოცემული ფუნქციებიდან და ინდექსერიდან. განვიხიოთ  ArrayList კოლქციის რამოდენიმე ფუნქცია.

using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace CollectionArrayList {
    class Program {
        static void Main(string[] args) {
            ArrayList a = new ArrayList();
            //Add ით ხდება ახალი წევრების დამატება მასივისთვის; 
            a.Add("nuli ---- 0");
            a.Add("erti ---- 1");
            a.Add("ori ----- 2");
            a.Add("sami ---- 3");
            a.Add("otxi ---- 4");
            a.Add("xuti ---- 5");
            //Insert–ით ასევე ვამატებთ წევრებს, ოღონთ უკვე არსებულ ინდექსზე 
            //მაგრამ ამ დროს არ ხდება ობიექტზე გადაწერა, არამედ მოცემული ინდექსის 
            //ობიექტს წაანაცვლებს წინ და მის ადგილას თვითონ ჩაჯდება;
            a.Insert(1, "aq chavamate -------------- 1");
            a.Insert(3, "aq chavamate -------------- 2");
            //კოლექციის წევრებს ინდექსერის საშუალებითაც შეგვიძლია მივწვდეთ //და შეგვიძლია როგორც წავიკიტხოთ ობიექტი ასევე გადავაწეროთ სხვა მნიშვნელობა;
            a[3] = "igive adgilas gdavacere --- 3";
            //Remove ფუნქციით კოლექციიდან ამოიჭრება ის წევრი რომელსაც გადავცემთ //პარამეტრად;
            a.Remove("aq chavamate -------------- 1");
            //RemoveAt ფუნქცია ამოჭრის წევრს ინდექსის მიხედვით; 
            a.RemoveAt(2);

            //Add ფუნქცია აბრუნებს კოლექციის ყველაზე მაღალი ინდექსის მნიშვნელობას;
            Console.WriteLine(a.Add("eqvsi --- 6"));
            //Count აქსესორი გვაძლევს კოლექციის ზომას;
            for(int i = 0; i < a.Count; i++) {
                Console.WriteLine(a[i]);
            }

            Console.WriteLine("\nArray Count = " + a.Count);
            //Capacity განსაზრვრავს კოლექციისთვის გამოყოფილი მეხსიერების მოცულობას //საქმე იმაშია, რომ კოლექციის ზომის ცვლილება ხდება შემდეგნაირად //განვიხილოთ შემთხვევა როდესაც კოლექციის სიგრძეა 4 და გვინდა Add-ით //დავამატოთ ახალი ობიექტი, ასეთ დროს Capacity=4 და ამიტომ ჯერ //იზრდება არსებული მასივის მასივის სიგრძე ორჯერ ანუ ხდება 8,რაც //მიიღწევა ახალი მასივის შექმნით(ანალოგიურად როდესაც ელემენტების //სიმრავლე მიაღწევს 8 Capacity გახდება 16 და ასეშემდეგ.)შემდეგ მეხუთე //წევრი მიიღებს მნიშვნელობას, ხოლო მასივის დანარჩენი სამი წევრი არის //null–ი და კოლექციის გარედან მიუწვდომელია. //მეხსიერების წინასწარ გამოყოფა მნიშვნელოვანია, რადგან ყოველი წევრის //დამატებისას აღარ უწევს კოლექციას ახლიდან გამოყოს //მეცსიერება(ანუ ახლიდან შექმნას ობიექტი);
            Console.WriteLine("Array Capacity = " + a.Capacity);
            string[] arr = new string[9];
           //CopyTo მეთოდით კოლექციის წევრების მასივში გადმოტანა;
            a.CopyTo(arr);

            Console.WriteLine("es aris chveulebrivi masivi\n");
            for(int i = 0; i < a.Count; i++) {
                Console.WriteLine(arr[i]);
            }
            Console.WriteLine("\nes aris chveulebrivi masivi");

            ArrayList na = new ArrayList();
            na = (ArrayList)a.Clone();
            //Clone მეთოდი უბრალოდ ახდენს კოლექციის ელემენტების კლონირებას //(ArrayList)a.Clone(); ჩანაწერით ხდება კოლექციის ანბოქსიგი, რადგან
            //თავისთავად ფუნქცია აბრუნებს object–ის ტიპის პარამეტრს
            Console.ReadKey();
        }
    }
}
Advertisements
This entry was posted in C# Programming. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s