c collections arraylist
Колекциите C # са специализираните класове за съхранение и промяна на данни. В този урок ще научите за колекции C # като ArrayList, HashTable & SortedList с примери:
Те служат за различни цели като динамично разпределение на паметта, оценка на не-последователни данни и т.н.
Всички тези класове използват обектния клас, който е базовият клас за всички други типове данни.
=> Внимавайте тук за пълната серия за обучение на C #
Какво ще научите:
какво е добро безплатно почистване на компютър
- Колекции C # и тяхното използване
- C # ArrayList
- Как да инициализирам списък с масиви?
- Как да добавяте елементи в списък с масиви?
- Как да получите достъп до елемент от ArrayList?
- Как да вмъкнете елемент в ArrayList?
- Как да премахнете елемент от ArrayList?
- Как да премахна елемента на списъка с помощта на индекса?
- Как да сортирате и обърнете списък с масиви?
- C # HashTable
- C # SortedList
- C # ArrayList
- Заключение
Колекции C # и тяхното използване
C # ArrayList
ArrayList е част от колекциите в C #. Използва се, за да съдържа данни от всеки даден тип данни. Той е подобен на масив в C #, но няма определен размер. Размерът му се увеличава автоматично с добавянето на повече елементи в него.
Как да инициализирам списък с масиви?
ArrayList може да бъде инициализиран с помощта на ключовата дума „ArrayList“.
ArrayList arrList = new ArrayList();
Как да добавяте елементи в списък с масиви?
Можете да добавите единичен елемент в списък с масиви, като използвате метода Add () и набор от елементи или множество елементи от друга колекция, като използвате метода AddRange ().
Пример:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7896); arrList.Add('Seven'); Console.ReadLine(); } } }
Тук можете да видите, че сме използвали метода ArrayList.Add (). Както можете да забележите, добавихме както цели числа, така и низ в един и същ списък с масиви. Това е възможно, тъй като списъкът от масиви не е родов тип данни, т.е.може да съдържа елемент от всеки даден тип данни.
Как да получите достъп до елемент от ArrayList?
Елементът от списък с масиви може да бъде достъпен подобно на масив, т.е.с помощта на индекса. Но тъй като това е родов тип, първо трябва да го приведем към подходящ тип данни или да използваме ключова дума var, докато имаме достъп до стойност от списъка с масиви.
Пример:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7896); arrList.Add('Seven'); //casted and retrieved data int first_index = (int)arrList(0); string second_index = (string)arrList(1); Console.WriteLine('The first index value is : ' + first_index); Console.WriteLine('The second index value is : ' + second_index); Console.ReadLine(); } } }
В горния пример получихме данните с помощта на индекса на списъка с масиви и след това ги прехвърлихме към съответния тип данни. След това резултатите са отпечатани на конзолата като изход.
Резултатът за горната програма ще бъде:
Изход
Първата стойност на индекса е: 7896
Втората стойност на индекса е: Седем
Как да вмъкнете елемент в ArrayList?
За да вмъкнете елемент в ArrayList в определена точка или индекс. използва се методът Insert ().
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7896); arrList.Add('Seven'); //casted and retrieved data int first_index = (int)arrList(0); string second_index = (string)arrList(1); Console.WriteLine('The first index value is : ' + first_index); Console.WriteLine('The second index value is : ' + second_index); arrList.Insert(1, 'Eight'); second_index = (string)arrList(1); Console.WriteLine('The second index value is : ' + second_index); Console.ReadLine(); } } }
По този начин ние вмъкнахме нов низ в индекс 1, използвайки метода insert (). Така че, ако стартираме горната програма, ще получим следния изход:
Изход
Първата стойност на индекса е: 7896
Втората стойност на индекса е: Седем
Втората стойност на индекса е: Осем
Как да премахнете елемент от ArrayList?
Елемент може да бъде премахнат от ArrayList чрез метода Remove (). Методът Remove приема параметър, т.е. стойността, която трябва да бъде премахната от масива.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7896); arrList.Add('Seven'); //casted and retrieved data int first_index = (int)arrList(0); string second_index = (string)arrList(1); Console.WriteLine('The first index value is : ' + first_index); Console.WriteLine('The second index value is : ' + second_index); arrList.Insert(1, 'Eight'); second_index = (string)arrList(1); Console.WriteLine('The second index value is : ' + second_index); arrList.Remove(7896); var data = arrList(0); Console.WriteLine('The value at 0 index is : ' + data); Console.ReadLine(); } } }
Методът remove премахва дадената стойност от списъка. Когато стойността се премахне от дадения индекс, следващата стойност се премества с един индекс нагоре, за да запълни празнината. Тъй като премахваме 0 индекса, стойността от индекс 1 ще се премести и ще запълни празнотата при 0.
Резултатът от следната програма ще бъде:
Изход
Първата стойност на индекса е: 7896
Втората стойност на индекса е: Седем
Втората стойност на индекса е: Осем
Стойността при индекс 0 е: Осем
Как да премахна елемента на списъка с помощта на индекса?
Потребителят може да премахне елемент от списък от определен индекс чрез метода RemoveAt (). RemoveAt () приема единичен параметър с номер на индекс, от който елементът трябва да бъде премахнат. Подобно на метода Remove, премахването на елемент от средата ще изтласка следващия елемент, за да се придвижи една стъпка нагоре, за да запълни празнината.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7896); arrList.Add('Seven'); //casted and retrieved data int first_index = (int)arrList(0); string second_index = (string)arrList(1); Console.WriteLine('The first index value is : ' + first_index); Console.WriteLine('The second index value is : ' + second_index); arrList.Insert(1, 'Eight'); second_index = (string)arrList(1); Console.WriteLine('The second index value is : ' + second_index); arrList.RemoveAt(1); var data = arrList(1); Console.WriteLine('The value at 1 index is : ' + data); Console.ReadLine(); } } }
В горния пример използвахме RemoveAt за премахване на индекс 1. Следователно елементът в индекс 2 трябва да се премести в индекс 1, за да замести празнината.
Резултатът от следната програма ще бъде:
Изход
Първата стойност на индекса е: 7896
Втората стойност на индекса е: Седем
Втората стойност на индекса е: Осем
Стойността при 1 индекс е: Седем
Как да сортирате и обърнете списък с масиви?
ArrayList предлага два различни метода за сортиране и обратни операции. Има само едно условие, т.е. всички елементи в списъка с масиви трябва да имат един и същ тип данни за сравнение с компаратор, в противен случай това ще доведе до грешка по време на изпълнение.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; namespace ConsoleApp1 { class Program { static void Main(string() args) { ArrayList arrList = new ArrayList(); arrList.Add(7); arrList.Add(4); arrList.Add(5); arrList.Add(1); arrList.Add(3); Console.WriteLine('Original Array List'); foreach (var v in arrList) { Console.Write(v + ' '); } //sorting an array list Console.WriteLine(); Console.WriteLine('Sorted Array List'); arrList.Sort(); foreach (var srt in arrList) { Console.Write(srt + ' '); } //Reversing an array list Console.WriteLine(); Console.WriteLine('Reversed Array List'); arrList.Reverse(); foreach (var rvrs in arrList) { Console.Write(rvrs + ' '); } Console.ReadLine(); } } }
В горната програма първо създадохме списък с масиви с цял тип данни и след това използвахме метода на сортиране, за да сортираме списъка, и обратния метод, за да обърнем сортирания списък.
И така, резултатът от следния списък ще бъде:
Изход
Оригинален списък с масиви
7 4 5 1 3
Сортиран списък с масиви
1 3 4 5 7
Обърнат списък с масиви
7 5 4 3 1
C # HashTable
Пространството от имена на System.Collections в C # съдържа Hashtable, която е доста подобна на речника. Hashtable съхранява данни под формата на двойки ключ-стойност.
Той прави това вътрешно, като вътрешно присвоява хеш код на хеш ключ и всеки път, когато има достъп до данни, той съвпада с хеш кода с хеш ключ за извличане на данни. Всеки елемент в таблицата ще има двойка ключ-стойност
Как да инициализирам HashTable?
HashTable може да бъде инициализиран с помощта на ключовата дума HashTable и след това да се създаде екземпляр от нея.
Hashtable hashtbl = new Hashtable();
Как да добавяте елементи към HashTable?
Елементите могат да се добавят към HashTable с помощта на метода Add (). Позволява на потребителите да добавят елемент с неговия ключ и стойност. Не е важно да описвате типа данни на ключа или стойността. Докато добавяте елементи към HashTable, трябва да запомните, че ключовете не могат да съдържат null, чиито стойности могат да бъдат null.
HashTable.Add (ключове, стойности);
Пример:
class Program { static void Main(string() args) { Hashtable hashtbl = new Hashtable(); hashtbl.Add('Number',1); hashtbl.Add('Car', 'Ferrari'); hashtbl.Add(8, 'eight'); } }
Както можете да видите, ние сме добавили различни типове данни като ключове и стойности.
Как да получите достъп до елементи, представени в HashTable?
Човек може да извлече стойността на всеки ключ от Hashtable с помощта на индексатор. Но индексаторът също така изисква ключ за достъп и извличане на стойността от таблицата.
Нека добавим малък кодов фрагмент към горната програма за извличане на стойности:
как да отворите jar файл с
class Program { static void Main(string() args) { Hashtable hashtbl = new Hashtable(); hashtbl.Add('Number',1); hashtbl.Add('Car', 'Ferrari'); hashtbl.Add(8, 'eight'); int value1 = (int)hashtbl('Number'); String value2 = (string)hashtbl('Car'); String value3 = (string)hashtbl(8); Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(value3); Console.ReadLine(); } }
Сега, ако изпълним това, ще се получи следният изход:
един
ферари
осем
В горната програма сме хвърлили стойността на всички ключове за даден тип данни, за да премахнем всяка грешка при компилацията, която може да възникне. Това е така, защото като не-родова колекция, Hashtable не съдържа информация за типа данни на което и да е от неговото съдържание, т.е. ключове и стойности.
Следователно, ако се опитаме директно да получим компилатора на данни, ще се объркаме относно типа данни и ще изведем грешка.
Как да премахнете елемент от Hashtable?
Да приемем, че искаме да премахнем конкретна двойка ключ-стойност от таблицата на Hashtable. За да постигнем това, трябва да използваме метода Remove (), предлаган от колекциите. Методът Remove изтрива дадена двойка ключ-стойност от Hashtable за постоянно.
Премахване (ключ);
Нека добавим метода Remove в горната програма, за да разберем идеята:
class Program { static void Main(string() args) { Hashtable hashtbl = new Hashtable(); hashtbl.Add('Number',1); hashtbl.Add('Car', 'Ferrari'); hashtbl.Add(8, 'eight'); int value1 = (int)hashtbl('Number'); String value2 = (string)hashtbl('Car'); String value3 = (string)hashtbl(8); Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(value3); //now we remove a key hashtbl.Remove(8); //Lets try to find the remove key now String valueRemoved = (string)hashtbl(8); Console.WriteLine('The value of the given key is :'+valueRemoved); Console.ReadLine(); } }
Резултатът от горната програма ще бъде следният.
един
Ферари
осем
Стойността на дадения ключ е:
Не, стойността се отпечатва в конзолата, тъй като сме премахнали ключа от Hashtable. Следователно стойността на низа от valueRemoved е нула.
Ако искате да премахнете всичко от хеш-таблицата, тогава C # ни предоставя друг метод, наречен Clear (). Методът Remove изтрива по една двойка ключ-стойност, докато методът Clear изтрива всичко от hashmap.
Нека да разгледаме програмата по-долу, за да направим това:
class Program { static void Main(string() args) { Hashtable hashtbl = new Hashtable(); hashtbl.Add('Number',1); hashtbl.Add('Car', 'Ferrari'); hashtbl.Add(8, 'eight'); int value1 = (int)hashtbl('Number'); String value2 = (string)hashtbl('Car'); String value3 = (string)hashtbl(8); Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(value3); //now we remove a key hashtbl.Remove(8); //Lets try to find the remove key now String valueRemoved = (string)hashtbl(8); Console.WriteLine('The value of the given key is :'+valueRemoved); // clearing all data from the HashTable hashtbl.Clear(); Console.ReadLine(); } }
Горната програма ще премахне всички елементи от хеш-таблицата и ще я направи празна.
Други важни методи, предлагани от Hashtable, е ContainsKey () и ContainsValue (). И двата метода приемат един аргумент, който е ключ или стойност и връщат булева стойност. Така че, ако параметърът, предаден с този метод, присъства в хеш-таблицата, той ще върне истинска стойност и ако не присъства, тогава ще се върне false.
C # SortedList
Както подсказва името, SortedList съдържа сортирани данни във възходящ ред. Той е подобен на Hashtable, тъй като съдържа подобна двойка ключ-стойност. Всички бутони, вмъкнати или добавени към SortedList, се подреждат автоматично във възходящ ред.
Как да инициализирам сортиран списък?
SortedList може да бъде инициализиран с помощта на ключовата дума SortedList и създаване на обект за нея.
SortedList sortedList = new SortedList();
След това обектът може да се използва за извършване на операции, използвайки свойството и методите SortedList.
Как да добавите елемент към сортиран списък?
Можете да добавите елемент към SortedList, използвайки метода Add (). SortedList изисква да добавите ключ и стойност. Можете да добавяте ключове и стойности в произволен ред и сортираният списък ще подреди всички добавени елементи във възходящ ред.
class Program { static void Main(string() args) { SortedList sortedList = new SortedList(); sortedList.Add(2, 'Two Pineapples'); sortedList.Add(4, 'Four Apples'); sortedList.Add(3, 'Three Lemons'); sortedList.Add(5, 'Five Mangoes'); sortedList.Add(1, 'One Tree'); Console.ReadLine(); } }
В горната програма можете да видите, че сме добавили цяло число като ключ и след това низ като стойности. Можете да добавяте всеки тип данни, както искате и в произволен ред, който желаете. SortedList ще го подреди във възходящ ред.
Подобно на HashTable, ключовете не могат да бъдат нула и всички ключове трябва да имат един и същ тип данни за сравнение, в противен случай това ще хвърли грешка при компилация.
Сортираният списък сортира елемента всеки път, когато ги добавите. Така че, дори ако добавите някакъв елемент, след като сортирането е извършено, той отново ще сортира и добави елемента към съответния му индекс.
Как да получите достъп до елементите от сортиран списък?
Стойността в Сортирания списък може да бъде достъпна с помощта на ключа.
Нека добавим прост код, за да извлечем стойността от SortedList, описана в предишния пример:
class Program { static void Main(string() args) { SortedList sortedList = new SortedList(); sortedList.Add(2, 'Two Pineapples'); sortedList.Add(4, 'Four Apples'); sortedList.Add(3, 'Three Lemons'); sortedList.Add(5, 'Five Mangoes'); sortedList.Add(1, 'One Tree'); string i = (string)sortedList(1); string j = (string)sortedList(5); string k = (string)sortedList(3); Console.WriteLine(i); Console.WriteLine(j); Console.WriteLine(k); Console.ReadLine(); } }
Резултатът от горния кодов фрагмент ще бъде:
Едно дърво
Пет манго
Три лимона
В горния кодов фрагмент трябва да хвърлим стойността на всички ключове за даден тип данни, за да премахнем всяка грешка при компилацията, която може да възникне с типа данни на стойността. Това се прави, за да се гарантира, че грешката при компилацията не се изхвърля, дори ако някои от ключовете съдържат различни типове данни.
Как да проверя дали даден ключ съществува в сортиран списък?
Има два вградени метода, т.е. Съдържа() и ContainsKey () които ни помагат да определим дали даден ключ съществува в sortedList. ConstainsValue () е друг метод, който се използва за определяне дали дадена стойност присъства в колекцията или не.
Нека разгледаме проста програма, за да научим повече за тези методи.
class Program { static void Main(string() args) { SortedList sortedList = new SortedList(); sortedList.Add(2, 'Two Pineapples'); sortedList.Add(4, 'Four Apples'); sortedList.Add(3, 'Three Lemons'); sortedList.Add(5, 'Five Mangoes'); sortedList.Add(1, 'One Tree'); //boolean value for key 5 bool key = sortedList.ContainsKey(5); //boolean value for vlaue 'One Tree' bool val = sortedList.ContainsValue('One Tree'); //Boolean value for unavailable key bool unKey = sortedList.ContainsKey(25); //Boolean value for unavailable value bool unVal = sortedList.ContainsValue('some randome value'); Console.WriteLine('The sorted list contains 5 key :' + key); Console.WriteLine('The sorted list contains One Tree value :' + val); Console.WriteLine('The sorted list contains 25 key :' +unKey); Console.WriteLine('The sorted list contains some random value:' + unVal); Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
Сортираният списък съдържа 5 ключа: Вярно
Сортираният списък съдържа стойност на едно дърво: Вярно
Сортираният списък съдържа 25 ключа: False
Сортираният списък съдържа някаква случайна стойност: False
В горната програма можете ясно да видите, че ако стойността или ключът присъстват в Сортирания списък, тогава се връща истинска стойност и ако тя липсва, се връща фалшива стойност.
най-добрият софтуер за хакерство в света, безплатен за изтегляне
Как да премахна елемент от сортирания списък?
Сортираният списък предлага методи Remove () и RemoveAt () за изтриване на всеки елемент, който се намира в Сортиран списък. Remove приема един аргумент с името на ключа, а RemoveAt също приема един аргумент, но с индекс.
И двата метода премахват всеки елемент, присъстващ в списъка Сортирано въз основа на аргумента.
Нека да разгледаме един прост код, за да го разберем по-ясно.
class Program { static void Main(string() args) { SortedList sortedList = new SortedList(); sortedList.Add(2, 'Two Pineapples'); sortedList.Add(4, 'Four Apples'); sortedList.Add(3, 'Three Lemons'); sortedList.Add(5, 'Five Mangoes'); sortedList.Add(1, 'One Tree'); //The Remove() method accepts key as argument and removes both the key and the value sortedList.Remove(1); //Now we will check if the key is present bool rmvKey = sortedList.ContainsKey(1); Console.WriteLine('The presence if the key is: ' + rmvKey); //The RemoveAt() method acceots index as argument and remove any key and value present at that index sortedList.RemoveAt(3); Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
Присъствието, ако ключът е: False
В горната програма първо използвахме метода Remove, за да премахнем двойка ключ-стойност, използвайки ключа. Това ще премахне всяка двойка ключ-стойност, съответстваща на ключа, предоставен в аргумента. След това използвахме метода ContainsKey, за да потвърдим, че премахнатият ключ вече не съществува в списъка Сортирано.
В следващия ред използвахме метода RemoveAt, който премахва елементи с помощта на индекса. По този начин, както обсъждахме по-рано, след като конкретният елемент бъде премахнат от индекса, друг елемент ще се премести нагоре, за да пренареди и поддържа структурата на сортирания списък.
Заключение
Колекциите са специални класове, представени на езика за програмиране C # за съхраняване и работа с данни. Те се използват за извършване на конкретни действия, т.е.за създаване на динамични списъци, обръщане, сортиране и др. Върху даден набор от данни.
В този урок научихме за ArrayList, който е подобен на масив в някои аспекти, но няма предварително зададен размер. Научихме и за HashTable, който съхранява данни в двойки ключ-стойност. Всяка стойност може да бъде извлечена с помощта на ключа.
Също така научихме за сортирания списък, който е подобен на HashTable, но той автоматично сортира всички данни, присъстващи в него, във възходящ ред въз основа на ключовете.
Данните в Сортирания списък винаги са във възходящ ред, т.е. дори ако премахнете определен елемент от средата или добавите нов елемент към Сортирания списък, той автоматично ще подреди всички данни във възходящ ред.
Примерен код
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SeleniumFrameWork.FrameworkEssentials; using SeleniumFrameWork.FrameWorkSupportModules; namespace ConsoleApp1 { class Program { static void Main(string() args) { /* Array List Code */ ArrayList arrList = new ArrayList(); arrList.Add(7); arrList.Add(4); arrList.Add(5); arrList.Add(1); arrList.Add(3); Console.WriteLine('Original Array List'); foreach (var v in arrList) { Console.Write(v + ' '); } //sorting an array list Console.WriteLine(); Console.WriteLine('Sorted Array List'); arrList.Sort(); foreach (var srt in arrList) { Console.Write(srt + ' '); } //Reversing an array list Console.WriteLine(); Console.WriteLine('Reversed Array List'); arrList.Reverse(); foreach (var rvrs in arrList) { Console.Write(rvrs + ' '); } /* HashTable Code */ Hashtable hashtbl = new Hashtable(); hashtbl.Add('Number', 1); hashtbl.Add('Car', 'Ferrari'); hashtbl.Add(8, 'eight'); int value1 = (int)hashtbl('Number'); String value2 = (string)hashtbl('Car'); String value3 = (string)hashtbl(8); Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(value3); //now we remove a key hashtbl.Remove(8); //Lets try to find the remove key now String valueRemoved = (string)hashtbl(8); Console.WriteLine('The value of the given key is :' + valueRemoved); // clearing all data from the HashTable hashtbl.Clear(); /* Sorted List Code */ SortedList sortedList = new SortedList(); sortedList.Add(2, 'Two Pineapples'); sortedList.Add(4, 'Four Apples'); sortedList.Add(3, 'Three Lemons'); sortedList.Add(5, 'Five Mangoes'); sortedList.Add(1, 'One Tree'); string i = (string)sortedList(1); string j = (string)sortedList(5); string k = (string)sortedList(3); Console.WriteLine(i); Console.WriteLine(j); Console.WriteLine(k); //boolean value for key 5 bool key = sortedList.ContainsKey(5); //boolean value for vlaue 'One Tree' bool val = sortedList.ContainsValue('One Tree'); //Boolean value for unavailable key bool unKey = sortedList.ContainsKey(25); //Boolean value for unavailable value bool unVal = sortedList.ContainsValue('some randome value'); Console.WriteLine('The sorted list contains 5 key :' + key); Console.WriteLine('The sorted list contains One Tree value :' + val); Console.WriteLine('The sorted list contains 25 key :' +unKey); Console.WriteLine('The sorted list contains some randome value:' + unVal); //The Remove() method accepts key as argument and removes both the key and the value sortedList.Remove(1); //Now we will check if the key is present bool rmvKey = sortedList.ContainsKey(1); Console.WriteLine('The presence if the key is: ' + rmvKey); //The RemoveAt() method acceots index as argument and remove any key and value present at that index sortedList.RemoveAt(3); Console.ReadLine(); } } }
=> Потърсете тук лесното ръководство за обучение на C #
Препоръчително четене
- Урок за Python DateTime с примери
- Изрежете командата в Unix с примери
- Синтаксис на командата Unix Cat, Опции с примери
- Използване на курсора в MongoDB с примери
- Ls Command в Unix с примери
- Метод за сортиране на MongoDB () с примери
- Команда Grep в Unix с прости примери
- Използване на ObjectId () в MongoDB с примери