c collections arraylist
Колекції C # - це спеціалізовані класи для зберігання та модифікації даних. У цьому посібнику ви дізнаєтесь про колекції C #, такі як ArrayList, HashTable & SortedList із прикладами:
Вони служать різним цілям, таким як динамічне розподіл пам'яті, оцінка непослідовних даних тощо.
Усі ці класи використовують об'єктний клас, який є базовим класом для всіх інших типів даних.
=> Зверніть увагу на повну серію навчальних програм C # тут
Що ви дізнаєтесь:
найкраща програма для перевірки температури комп'ютера
Колекції C # та їх використання
C # ArrayList
ArrayList є частиною колекцій на C #. Він використовується для зберігання даних будь-якого даного типу даних. Це схоже на масив у C #, але він не має певного розміру. Його розмір збільшується автоматично, оскільки в нього додається більше елементів.
Як ініціалізувати ArrayList?
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 (). Як ви можете помітити, ми додали як цілі числа, так і рядок до одного списку масивів. Це можливо, оскільки список масивів не є загальним типом даних, тобто він може містити елемент будь-якого даного типу даних.
Як отримати доступ до елемента зі списку масивів?
Елемент списку масиву можна отримати, подібно до масиву, тобто за допомогою індексу. Але оскільки це не загальний тип, спочатку нам потрібно передати його на відповідний тип даних або використовувати ключове слово 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 у вказану точку або індекс. використовується метод 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 # хеш-таблиця
Простір імен System.Collections на C # містить таблицю хеш-таблиць, яка дуже схожа на словник. Hashtable зберігає дані у формі пар ключ-значення.
Він робить це внутрішньо, призначаючи хеш-код внутрішньому хеш-ключу, і кожен раз, коли здійснюється доступ до даних, він збігається з хеш-кодом з хеш-ключем для отримання даних. Кожен елемент таблиці матиме пару ключ-значення
Як ініціалізувати хеш-таблицю?
HashTable можна ініціалізувати, використовуючи ключове слово HashTable, а потім створивши його екземпляр.
Hashtable hashtbl = new Hashtable();
Як додати елементи до хеш-таблиці?
Елементи можна додавати до HashTable за допомогою методу Add (). Це дозволяє користувачам додавати елемент із його ключем та значенням. Не важливо описувати тип даних ключа або значення. Додаючи елементи до HashTable, слід пам’ятати, що ключі не можуть містити нуль, значення якого можуть бути нульовими.
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'); } }
Як бачите, ми додали різні типи даних як ключі та значення.
Як отримати доступ до елементів, представлених у хеш-таблиці?
Можна отримати значення будь-якого ключа з таблиці хеш-таблиці за допомогою індексатора. Але індексатор також вимагає ключ для доступу та отримання значення з таблиці.
Давайте додамо невеликий фрагмент коду до вищезазначеної програми для отримання значень:
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(); } }
Тепер, якщо ми виконаємо це, буде отримано такий результат:
1
феррарі
вісім
У наведеній вище програмі ми додали значення всіх ключів для даного типу даних, щоб видалити будь-яку помилку компіляції, яка може виникнути. Це пов’язано з тим, що, не загальна колекція, Hashtable не містить інформації про тип даних будь-якого її вмісту, тобто ключі та значення.
Отже, якщо ми спробуємо безпосередньо отримати компілятор даних, ми заплутаємось щодо типу даних і викинемо помилку.
Як видалити елемент з Hashtable?
Скажімо, ми хочемо видалити певну пару ключ-значення із таблиці тегів. Для досягнення цього ми повинні використовувати метод Remove (), запропонований колекціями. Метод Remove постійно видаляє дану пару ключ-значення з таблиці хеш-таблиць.
Видалити (ключ);
Давайте додамо метод Remove у вищезазначену програму, щоб отримати ідею:
Запитання та відповіді для співбесіди в HTML
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(); } }
Результатом роботи вищезазначеної програми буде наступний.
1
Ferrari
вісім
Значення даного ключа:
Ні, значення друкується на консолі, оскільки ми вилучили ключ із Hashtable. Отже, значення рядка з valueRemoved є нульовим.
Якщо ви хочете видалити все з хеш-таблиці, тоді C # надає нам інший метод, який називається Clear (). Метод Remove видаляє по одній парі ключ-значення за раз, тоді як метод Clear видаляє все з хеш-карти.
Давайте подивимось на наведену нижче програму, щоб зробити це:
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 = 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, ключі не можуть бути нульовими, і всі ключі повинні мати однаковий тип даних для порівняння, інакше це спричинить помилку компіляції.
Сортований список сортує елемент кожного разу, коли ви їх додаєте. Отже, навіть якщо ви додаєте будь-який елемент після того, як сортування було зроблено, він знову відсортує та додасть елемент до відповідного індексу.
Як отримати доступ до елементів із відсортованого списку?
Доступ до значення у відсортованому списку можна отримати за допомогою ключа.
Давайте додамо простий код, щоб отримати значення зі Сортованого списку, описаного в попередньому прикладі:
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. ConstensValue () - це ще один метод, який використовується для визначення того, чи є певне значення в колекції чи ні.
Давайте розглянемо просту програму, щоб дізнатись більше про ці методи.
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 ключів: True
Відсортований список містить значення One Tree: True
Відсортований список містить 25 ключів: False
Відсортований список містить деяке випадкове значення: False
У наведеній вище програмі ви можете чітко бачити, що якщо значення або ключ присутній всередині Сортованого списку, тоді повертається справжнє значення, а якщо воно відсутнє, то повертається хибне значення.
Як вилучити елемент зі списку SortedList?
Відсортований список пропонує методи 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, щоб перевірити, що видалений ключ більше не існує у списку Сортовані.
як відкрити файли xml - -
У наступному рядку ми використали метод 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 в Unix з прикладами
- Метод сортування MongoDB () із прикладами
- Команда Grep в Unix на простих прикладах
- Використання ObjectId () у MongoDB з прикладами