c list dictionary tutorial with code examples
Този урок обяснява C # Списък и речник с примери. Ще научите как да инициализирате, попълвате и достъпвате елементи в C # речник и списък:
В нашия предишен урок за колекции C # научихме за типовете колекции, присъстващи в C # като ArrayList, Hashtable, Stack, SortedList и др. Нещото, което е често срещано сред тези типове колекции, е, че те могат да съхраняват всякакъв тип данни.
Това изглежда доста полезно за съхраняване на различни типове данни в един обект за събиране, но недостатъкът е, че докато се извличат данни от колекцията, се изисква предаване на данни към приложим тип данни. Без излъчване на данни програмата ще създаде изключение по време на изпълнение и може да попречи на приложението.
=> БЕЗПЛАТНИ Уроци за обучение на C # за всички
За да разреши тези проблеми, C # предлага и общи класове за събиране. Обща колекция предлага по-добра производителност по време на съхранение и извличане на елементите.
Какво ще научите:
C # Списък
Вече научихме за ArrayList в предишните статии. По принцип Списък е подобен на ArrayList, като единствената разлика е, че Списъкът е родов. Списъкът има уникално свойство да разширява размера си, докато расте, подобно на списъка с масиви.
Как да инициализирам списък?
Можем да инициализираме списък по следните начини:
//using List type for initialization List listInteger = new List(); //using IList type for initialization IList listString = new List();
Ако разгледате горния пример, можете да видите, че в първия ред сме използвали Списък за инициализиране на списък с цели числа. Но във втория ред използвахме IList за инициализиране на списъка с низове. Можете да използвате всяко от тях за вашата програма. Списъкът всъщност е изпълнението на интерфейса IList.
Как да добавите и вмъкнете елемент в списъка?
Подобно на ArrayList, ние можем да добавим елемент към списъка чрез метода Add (). Методът add приема стойност на типа данни като аргумент.
Синтаксис
ListName.Add(DataType value);
Нека разгледаме проста програма за добавяне на данни към списък и IList.
Програма:
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List ;(); //Add elements to the list listInteger.Add(1); listInteger.Add(2); listInteger.Add(3); //using IList type for initialization IList listString = new List(); listString.Add('One'); listString.Add('Two'); listString.Add('Three'); Console.ReadLine(); } }
Елементът може да бъде добавен и директно при инициализиране на списъка. Можем директно да добавим стойността към списъка по време на самата инициализация, по подобен начин, както го направихме по време на нашата глава за масиви.
Това може да се добави чрез поставяне на къдрави скоби след Списъка и след това чрез записване на стойността вътре в него, разделена със запетаи. Нека променим горната програма малко, за да можем да добавим стойността директно по време на инициализацията.
най-добрият външен софтуер за възстановяване на твърд диск
И така, нашата програма сега ще изглежда така:
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; //using IList type for initialization IList listString = new List(); listString.Add('One'); listString.Add('Two'); listString.Add('Three'); Console.ReadLine(); } }
В горната програма инициализирахме стойностите на целочисления списък в началото по време на инициализацията. Това ни позволи да предадем стойността директно, без да пишем метода Add () за всяка стойност. Това е доста полезно, ако разполагаме с ограничен количествено измерим обем данни, които трябва да поставим в списъка.
Как да вляза в списъка?
Можем да получим достъп до отделни елементи от списъка, като използваме индекса. Индексът може да бъде предаден в квадратната скоба след името на списъка.
Синтаксис
dataType Val = list_Name(index);
Сега нека разгледаме проста програма, за да получим данните от списъка, който създадохме в предишната ни програма.
Програма
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; int val = listInteger(1); Console.WriteLine(val); } }
Резултатът от следващата програма ще бъде стойността при индекс 1. Индексът започва от 0, изходът ще бъде:
две
Да кажем, че искаме да получим всички данни от списъка, можем да направим това, като използваме за всеки цикъл или за цикъл.
За всеки цикъл
Можем да използваме за всеки цикъл, за да получим всички данни от списъка.
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; foreach (var val in listInteger) { Console.WriteLine(val); } } }
Тук прегледахме списъка, използвайки за всеки цикъл, като декларирахме променлива стойност. Това ще позволи всеки цикъл през списъка, докато в него има някои данни.
За Loop
За да използваме цикъл for, трябва да знаем броя на елементите, присъстващи в списъка. Методът Count () може да се използва, за да се получи броят на елемента.
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; //finding the size of the list using count int size = listInteger.Count; for (int i =0; iПонякога може да се наложи да вмъкнем нов елемент в списъка. За целта трябва да използваме метода Insert (), за да добавим нов метод навсякъде в списъка. Методът за вмъкване приема два аргумента, първият е индексът, при който искате да вмъкнете данните, а вторият е данните, които искате да вмъкнете.
Синтаксисът за вмъкването е:
List_Name.Insert(index, element_to_be_inserted);
Сега нека вмъкнем елемент в списъка, който създадохме по-рано. Ще добавим инструкция за вмъкване към горната програма и ще се опитаме да видим как работи:
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; //finding the size of the list using count int size = listInteger.Count; for (int i =0; i Ако изпълним горната програма, изходът ще бъде:
1
две
3
Стойност в списъка след вмъкване на нова вал
1
22.
две
3
След цикъла for добавихме оператора insert, за да вмъкнем цяло число 22 в индекс 1 в предварително дефинирания списък. След това написахме за всеки цикъл, за да отпечатаме всички елементи, които сега присъстват в списъка (След вмъкване на първите данни).
От изхода можем ясно да видим, че всички елементи от списъка са изместени напред, за да отстъпи място на новия елемент в индекс 1. Индексът 1 вече има 22 като елемент, а предишният елемент в индекс 1, т.е. следващия индекс и така нататък.
Как да премахна елемент от списъка?
Понякога може да поискаме да премахнем елементи от списъка. За целта C # предлага два различни метода. Тези два метода са Remove () и RemoveAt (). Remove се използва за премахване на определен елемент от списъка, а RemoveAt се използва за премахване на всеки елемент, присъстващ в дадения индекс.
Нека разгледаме синтаксиса.
Синтаксис
Remove(Element name); RemoveAt(index);
Сега нека добавим изявлението Remove към предишния код и да видим какво ще се случи.
class Program { static void Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; //finding the size of the list using count int size = listInteger.Count; for (int i =0; i Резултатът от горната програма ще бъде:
1
две
3
Премахване на стойност от списъка
1
3
В горната програма използвахме метода remove, за да премахнем елемент 2 от списъка. Както можете да видите в изхода, след като методът Remove бъде изпълнен, списъкът вече не съдържа елемента, който сме премахнали.
По същия начин можем да използваме и метода RemoveAt. Нека заменим метода Remove в горната програма с метода RemoveAt () и предадем индексния номер като параметър.
class Program { staticvoid Main(string() args) { //using List type for initialization List listInteger = new List () {1,2,3}; //finding the size of the list using count int size = listInteger.Count; for (int i =0; i Резултатът от горната програма ще бъде:
как да използвам css селектор в селен
1
две
3
Премахване на стойност от списъка
1
две
В горната програма можете ясно да видите, че сме премахнали елемента, присъстващ в индекс 2, вместо да премахнем цялото число 2. Следователно, в зависимост от изискването, човек може да използва или Remove (), или RemoveAt (), за да премахне определен елемент от списък.
Речник на C #
Речникът на C # е подобен на речника, който имаме на всеки език. Тук също имаме колекция от думи и техните значения. Думите са известни като ключови и техните значения или дефиниция могат да бъдат определени като стойности.
Речникът приема два аргумента, първият е ключов, а вторият е стойност. Той може да бъде инициализиран с помощта на променлива от клас на речника или интерфейс на IDictionary.
Синтаксисът на речника е:
Dictionary
Нека да разгледаме проста програма за инициализиране на речник:
Dictionary data = new Dictionary();
В горната програма можете ясно да видите, че сме инициализирали данните от речника както с ключ, така и със стойност като низ. Но можете да използвате всяка двойка тип данни за ключове и стойности. Например, ако променим горното твърдение, за да съдържа различен тип данни, тогава също ще бъде правилно.
Dictionary data = new Dictionary();
Типът данни в ъгловата скоба е за ключове и стойности. Можете да запазите всеки тип данни като ключ и стойност.
Как да добавите ключове и ценности към речник?
Видяхме как можем да инициализираме речник. Сега ще добавим ключове и техните стойности към речника. Речникът е доста полезен, когато искате да добавите различни данни и техните стойности в списък. Методът Add () може да се използва за добавяне на данни към речника.
Синтаксис
DictionaryVariableName.Add(Key, Value);
Сега нека включим оператора Add в горната програма, за да добавим ключове и стойности към речника.
Програма
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); } }
В горната програма използвахме метода Add (), за да добавим ключа и стойностите към речника. Първият параметър, предаден на метода Add (), е ключът, а вторият параметър е стойността на ключа.
Как да получите достъп до ключове и ценности от речник?
Както беше обсъдено в нашия урок в списъка, ние също можем да имаме достъп до елементи от речника по няколко различни начина. Ще обсъдим няколко от важните начини, по които можем да получим достъп до него тук. Ще обсъдим за цикъл, за всеки цикъл и индекс за достъп до елементи от данни.
Индексът може да се използва за достъп до определени стойности от списъка.
Цикълът For може да се използва за достъп или извличане на всички елементи от речника, но изисква размера на речника, за да спре цикъла. Тъй като всеки цикъл е по-гъвкав, той може да извлече всички налични данни от речника, без да изисква размера на речника.
Използване на индексиране
Елемент от индекса може да се използва подобно на масив за достъп до елемента, като основната разлика е, че вместо индекс се нуждаем от ключове за достъп до стойностите.
Синтаксис
Dictionary_Name(key);
Програма
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); string value = dctn('two'); Console.WriteLine(value); Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
второ
Използване на Loop за достъп до елемент
Цикълът for може да се използва за достъп до всички елементи на речника. Но също така трябва да получи броя на елементите в речника за определен брой итерации.
b дърво и b + дърво
Нека добавим for цикъл към горната програма, за да извлечем всички стойности от речника.
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); for(int i =0; i Резултатът от горната програма ще бъде:
Елементът при key: one и стойността му е: first
Елементът в key: two и стойността му е: second
Елементът в ключ: три и стойността му е: Трети
В горната програма използвахме метода ElementAt (), за да получим ключа в даден индекс, след което използвахме същия ключ за извличане на данните на стойността на ключа. Цикълът for преминава през всички данни в речника. Свойството Count е използвано, за да се получи размерът на речника за итерация.
Използване на For-Every Loop
Подобно на цикъл for, можем да използваме и за всеки цикъл.
Нека да разгледаме горната програма с цикъла за всеки.
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); foreach (KeyValuePair item in dctn) { Console.WriteLine('The Key is :'+ item.Key+' - The value is: '+ item.Value); } Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
Ключът е: един - Стойността е: първи
Ключът е: два - Стойността е: втори
Ключът е: три - Стойността е: Трета
Горната програма използва KeyValuePair, за да декларира променливата, след което итерираме през всяка от двойките ключ-стойност в речника и отпечатваме това в конзолата.
Как да проверя наличието на данни в речник?
Понякога трябва да проверим дали в речника съществува определен ключ или стойност. Можем да проверим това, като използваме два метода, т.е. ContainsValue () и ContainsKey (), за да проверим за съществуващия ключ или стойност в речника.
Съдържа метод се използва за валидиране, ако дадената стойност присъства в речника или не. Методът ContainsKey се използва за проверка дали даден ключ съществува в речника или не.
Синтаксис
Dictionary_Name.ContainsValue(Value); Dictionary_Name.ContainsKey(Key);
Нека напишем проста програма за валидиране с помощта на метода Contains и ContainsKey.
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); bool key = dctn.ContainsKey('one'); bool val = dctn.ContainsValue('four'); Console.WriteLine('The key one is available : ' + key); Console.WriteLine('The value four is available : ' + val); Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
Ключовият е наличен: Вярно
Стойността четири е достъпна: False
В горната програма за първи път използвахме метода ContainsKey, за да проверим дали дадения ключ присъства в речника. Тъй като ключът присъства в речника, методът връща true. След това използваме ContainsValue, за да определим дали дадената стойност присъства или не. Тъй като стойността 'четири' не присъства в речника, тя ще върне false.
Как да премахнете елемент от речник?
Може да има време, в което ще трябва да премахнем определена двойка ключ-стойност от речника, за да изпълним определена логика на програмиране. Методът за премахване може да се използва за премахване на всяка двойка от речника въз основа на ключа.
Синтаксис
Remove(key);
Програма
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); //removing key two dctn.Remove('two'); //validating if the key is present or not bool key = dctn.ContainsKey('two'); Console.WriteLine('The key two is available : ' + key); Console.ReadLine(); } }
Резултатът от горната програма ще бъде:
Ключовите две са налични: False
В горната програма първо добавихме двойка ключ-стойност към речника. След това премахнахме ключ от речника и използвахме метода ContainsKey (), за да проверим дали двойката ключ-стойност вече не присъства в речника.
Заключение
Списъкът съхранява елементи от конкретния тип данни и нараства при добавяне на елементи. Той може също да съхранява множество дублиращи се елементи. Ние можем лесно да получим достъп до елементи в списъка, като използваме индекс или цикли. Списъкът е много полезен при съхраняване на голямо количество данни.
Речник се използва за съхраняване на двойки ключ-стойност. Тук ключовете трябва да са уникални. Стойностите от речника могат да бъдат извлечени с помощта на цикъл или индекс. Също така можем да проверяваме ключове или стойности, като използваме метода Contains.
=> Гледайте пълната серия за обучение на C # тук
Препоръчително четене
- C # Урок за обработка на изключения с примери за кодове
- Урок за Python DateTime с примери
- Урок за функции / методи на C # с примери за кодове
- Урок за SVN: Управление на изходния код с помощта на Subversion
- Инструкция за C # String - Методи за низове с примери за кодове
- Tortoise SVN Tutorial: Ревизии в кодовото хранилище
- Урок за Python Tuple с практически примери
- Ls Command в Unix с примери