c list dictionary tutorial with code examples
W tym samouczku wyjaśniono listę języka C # i słownik z przykładami. Dowiesz się, jak inicjować, wypełniać i uzyskiwać dostęp do elementów w słowniku i liście języka C #:
We wcześniejszym samouczku dotyczącym kolekcji C # dowiedzieliśmy się o typach kolekcji obecnych w języku C #, takich jak ArrayList, Hashtable, Stack, SortedList itp. Wspólną cechą tych typów kolekcji jest to, że mogą one przechowywać dowolny typ elementu danych.
Wydaje się to bardzo przydatne do przechowywania różnych typów danych w jednej jednostce kolekcji, ale wadą jest to, że podczas pobierania danych z kolekcji wymagane jest przesyłanie danych do odpowiedniego typu danych. Bez transmisji danych program zgłosi wyjątek w czasie wykonywania i może utrudniać aplikację.
=> BEZPŁATNE samouczki szkoleniowe C # dla wszystkich
Aby rozwiązać te problemy, C # oferuje również ogólne klasy kolekcji. Ogólna kolekcja zapewnia lepszą wydajność podczas przechowywania i pobierania elementów.
Czego się nauczysz:
Lista C #
O tablicy ArrayList dowiedzieliśmy się już w poprzednich artykułach. Zasadniczo lista jest podobna do tablicy ArrayList, jedyną różnicą jest to, że lista jest ogólna. Lista ma unikalną właściwość polegającą na zwiększaniu jej rozmiaru, podobnie jak w przypadku listy tablic.
Jak zainicjować listę?
Listę możemy zainicjować w następujący sposób:
//using List type for initialization List listInteger = new List(); //using IList type for initialization IList listString = new List();
Jeśli spojrzysz na powyższy przykład, zobaczysz, że w pierwszym wierszu użyliśmy listy do zainicjowania listy liczb całkowitych. Ale w drugiej linii użyliśmy IList do inicjalizacji listy ciągów. Możesz użyć dowolnego z nich w swoim programie. Lista jest w rzeczywistości implementacją interfejsu IList.
Jak dodać i wstawić element do listy?
Podobnie jak w przypadku ArrayList, możemy dodać element do listy za pomocą metody Add (). Metoda add akceptuje wartość typu danych jako argument.
Składnia
ListName.Add(DataType value);
Rzućmy okiem na prosty program dodający dane do listy i IList.
Program:
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(); } }
Element można również dodać bezpośrednio podczas inicjowania listy. Możemy bezpośrednio dodać wartość do listy w momencie inicjalizacji, w podobny sposób, jak zrobiliśmy to w rozdziale Tablice.
Można to dodać, umieszczając nawiasy klamrowe po liście, a następnie wpisując wartość wewnątrz niej oddzieloną przecinkami. Zmieńmy trochę powyższy program, abyśmy mogli dodać wartość bezpośrednio podczas inicjalizacji.
najlepsze oprogramowanie optymalizacyjne dla systemu Windows 10
Nasz program będzie teraz wyglądał następująco:
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(); } }
W powyższym programie zainicjowaliśmy wartości listy liczb całkowitych na początku podczas inicjalizacji. Umożliwiło nam to bezpośrednie przekazanie wartości bez konieczności pisania metody Add () dla każdej wartości. Jest to bardzo przydatne, jeśli mamy ograniczoną wymierną ilość danych, które musimy umieścić na liście.
Jak uzyskać dostęp do listy?
Możemy uzyskać dostęp do poszczególnych pozycji z listy za pomocą indeksu. Indeks można przekazać w nawiasach kwadratowych po nazwie listy.
Składnia
dataType Val = list_Name(index);
Przyjrzyjmy się teraz prostemu programowi, który pobierze dane z listy, którą utworzyliśmy w naszym poprzednim programie.
Program
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); } }
Dane wyjściowe następującego programu będą miały wartość o indeksie 1. Indeks zaczyna się od 0, wyjście będzie wyglądać następująco:
dwa
Teraz, powiedzmy, że chcemy pobrać wszystkie dane z Listy, możemy to zrobić za pomocą pętli for-each lub pętli for.
Dla każdej pętli
Możemy użyć dla każdej pętli, aby pobrać wszystkie dane z listy.
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); } } }
Tutaj przejrzeliśmy listę przy użyciu dla każdej pętli, deklarując wartość zmiennej. Pozwoli to na każdą pętlę przez listę, dopóki nie znajdzie się w niej trochę danych.
Dla pętli
Aby skorzystać z pętli for, musimy znać liczbę elementów znajdujących się na liście. Count () może służyć do uzyskania licznika elementu.
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; iCzasami może być konieczne wstawienie nowego elementu do listy. W tym celu musimy użyć metody Insert (), aby dodać nową metodę w dowolnym miejscu listy. Metoda insert akceptuje dwa argumenty, pierwszy to indeks, do którego chcesz wstawić dane, a drugi to dane, które chcesz wstawić.
Algorytm apriori w data mining na przykładzie
Składnia insertu to:
List_Name.Insert(index, element_to_be_inserted);
Teraz wstawmy element do utworzonej wcześniej listy. Dodamy instrukcję wstawiania do powyższego programu i spróbujemy zobaczyć, jak to działa:
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 Jeśli wykonamy powyższy program, wynik będzie wyglądał następująco:
1
dwa
3
Wartość listy po wstawieniu nowej wartości
1
22
dwa
3
Po pętli for dodaliśmy instrukcję insert, aby wstawić liczbę całkowitą 22 pod indeksem 1 na wcześniej zdefiniowanej liście. Następnie napisaliśmy pętlę for each, aby wypisać wszystkie elementy obecne na liście (po wstawieniu pierwszych danych).
Na podstawie wyników widać wyraźnie, że wszystkie elementy listy zostały przesunięte do przodu, aby zrobić miejsce dla nowego elementu o indeksie 1. Indeks 1 ma teraz 22 jako element, a poprzedni element o indeksie 1, tj. 2, został przesunięty do następny indeks i tak dalej.
Jak usunąć element z listy?
Czasami możemy również wymagać usunięcia pozycji z listy. Aby to zrobić, C # oferuje dwie różne metody. Te dwie metody to Remove () i RemoveAt (). Remove służy do usuwania określonego elementu z listy, a RemoveAt służy do usuwania dowolnego elementu obecnego w danym indeksie.
Spójrzmy na składnię.
Składnia
Remove(Element name); RemoveAt(index);
Teraz dodajmy instrukcję Remove do poprzedniego kodu i zobaczmy, co się stanie.
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 Wynik powyższego programu będzie:
1
dwa
3
Usuwanie wartości z listy
1
3
W powyższym programie użyliśmy metody remove do usunięcia elementu 2 z listy. Jak widać w danych wyjściowych po wykonaniu metody Remove, lista nie zawiera już usuniętego elementu.
Podobnie możemy skorzystać z metody RemoveAt. Zastąpmy metodę Remove w powyższym programie metodą RemoveAt () i przekażmy numer indeksu jako parametr.
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 Wynik powyższego programu będzie:
1
dwa
3
Usuwanie wartości z listy
1
dwa
W powyższym programie możesz wyraźnie zobaczyć, że usunęliśmy element obecny pod indeksem 2, zamiast usunąć liczbę całkowitą 2. Dlatego w zależności od wymagań można użyć Remove () lub RemoveAt () do usunięcia określonego elementu z elementu lista.
Słownik języka C #
Słownik w C # jest podobny do słownika, który mamy w dowolnym języku. Tutaj również mamy zbiór słów i ich znaczenia. Słowa są znane jako klucz, a ich znaczenie lub definicję można zdefiniować jako wartości.
Słownik przyjmuje dwa argumenty, pierwszy to klucz, a drugi wartość. Można go zainicjować za pomocą zmiennej klasy Dictionary lub interfejsu IDictionary.
Składnia słownika to:
Dictionary
Przyjrzyjmy się prostemu programowi do inicjalizacji słownika:
Dictionary data = new Dictionary();
W powyższym programie możesz wyraźnie zobaczyć, że zainicjowaliśmy dane słownika z kluczem i wartością jako ciągiem. Ale możesz użyć dowolnej pary typów danych dla kluczy i wartości. Na przykład, jeśli zmienimy powyższe stwierdzenie, aby zawierało inny typ danych, to również będzie poprawne.
Dictionary data = new Dictionary();
Typ danych wewnątrz nawiasu kątowego dotyczy kluczy i wartości. Możesz zachować dowolny typ danych jako klucz i wartość.
Jak dodać klucze i wartości do słownika?
Widzieliśmy, jak możemy zainicjować słownik. Teraz dodamy klucze i ich wartości do słownika. Słownik jest bardzo przydatny, gdy chcesz dodać różne dane i ich wartości do listy. Do dodawania danych do słownika można użyć metody Add ().
Składnia
DictionaryVariableName.Add(Key, Value);
Teraz uwzględnijmy instrukcję Add w powyższym programie, aby dodać klucze i wartości do słownika.
Program
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); } }
W powyższym programie użyliśmy metody Add (), aby dodać klucz i wartości do słownika. Pierwszy parametr przekazany do metody Add () to klucz, a drugi parametr to wartość klucza.
Jak uzyskać dostęp do kluczy i wartości ze słownika?
Jak omówiono w naszym tutorialu na liście, możemy również uzyskać dostęp do elementów ze słownika na kilka różnych sposobów. Omówimy tutaj kilka ważnych sposobów, w jakie możemy uzyskać do niego dostęp. Omówimy pętlę for, dla każdej pętli i indeksu dostępu do elementów danych.
Indeks może służyć do uzyskiwania dostępu do określonych wartości z listy.
Pętla For może służyć do uzyskiwania dostępu lub pobierania wszystkich elementów ze słownika, ale do zatrzymania pętli wymagana jest wielkość słownika. Ponieważ każda pętla jest bardziej elastyczna, może pobierać wszystkie dane obecne ze słownika bez wymagania rozmiaru słownika.
Korzystanie z indeksowania
Element z indeksu może być używany podobnie jak tablica, aby uzyskać dostęp do elementu, podstawowa różnica polega na tym, że zamiast indeksu potrzebujemy kluczy, aby uzyskać dostęp do wartości.
Składnia
Dictionary_Name(key);
Program
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(); } }
Wynik powyższego programu będzie:
druga
Używanie pętli For do uzyskiwania dostępu do elementu
Pętla for umożliwia dostęp do wszystkich elementów słownika. Ale musi również uzyskać liczbę elementów wewnątrz słownika dla wymaganej liczby iteracji.
Dodajmy pętlę for do powyższego programu, aby pobrać wszystkie wartości ze słownika.
c # pytania i odpowiedzi na rozmowę techniczną
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 Wynik powyższego programu będzie:
Element pod kluczem: one i jego wartość to: first
Element pod kluczem: dwa, a jego wartość to: second
Element pod kluczem: trzy i jego wartość to: Trzeci
W powyższym programie użyliśmy metody ElementAt (), aby uzyskać klucz o podanym indeksie, a następnie użyliśmy tego samego klucza do pobrania danych wartości klucza. Pętla for iteruje wszystkie dane wewnątrz słownika. Do określenia rozmiaru słownika dla iteracji użyto właściwości Count.
Korzystanie z pętli For-Each
Podobnie jak w przypadku pętli for, możemy również użyć pętli for each.
Przyjrzyjmy się powyższemu programowi z pętlą for-each.
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(); } }
Wynik powyższego programu będzie:
Klucz to: jeden - Wartość to: pierwszy
Klucz to: dwa - Wartość to: sekunda
Klucz to: trzy - Wartość to: Trzeci
Powyższy program używa KeyValuePair do zadeklarowania zmiennej, a następnie iterujemy przez każdą z par klucz-wartość w słowniku i wypisujemy to na konsoli.
Jak sprawdzić obecność danych w słowniku?
Czasami musimy sprawdzić, czy określony klucz lub wartość istnieje w słowniku, czy nie. Możemy to sprawdzić za pomocą dwóch metod, tj. ContainsValue () i ContainsKey (), aby sprawdzić istniejący klucz lub wartość w słowniku.
Contains służy do sprawdzania, czy podana wartość jest obecna w słowniku, czy nie. ContainsKey służy do sprawdzenia, czy dany klucz istnieje w słowniku, czy nie.
Składnia
Dictionary_Name.ContainsValue(Value); Dictionary_Name.ContainsKey(Key);
Napiszmy prosty program do walidacji przy użyciu metody Contains i 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(); } }
Wynik powyższego programu będzie:
Kluczowy jest dostępny: prawda
Dostępna jest wartość cztery: Fałsz
W powyższym programie najpierw użyliśmy metody ContainsKey, aby sprawdzić, czy dany klucz znajduje się w słowniku. Ponieważ klucz znajduje się w słowniku, metoda zwraca wartość true. Następnie używamy ContainsValue, aby określić, czy podana wartość jest obecna, czy nie. Ponieważ w słowniku nie ma wartości „cztery”, zwróci ona fałsz.
Jak usunąć element ze słownika?
Może się zdarzyć, że będziemy musieli usunąć ze słownika pewną parę klucz-wartość, aby spełnić określoną logikę programowania. Metoda Remove umożliwia usunięcie dowolnej pary ze słownika na podstawie klucza.
Składnia
Remove(key);
Program
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(); } }
Wynik powyższego programu będzie:
Dostępny jest klucz dwa: Fałsz
W powyższym programie najpierw dodaliśmy do słownika parę klucz-wartość. Następnie usunęliśmy klucz ze słownika i użyliśmy metody ContainsKey (), aby sprawdzić, czy para klucz-wartość nie jest już obecna w słowniku.
Wniosek
Lista przechowuje elementy określonego typu danych i rośnie w miarę dodawania elementów. Może również przechowywać wiele zduplikowanych elementów. Możemy łatwo uzyskać dostęp do elementów na liście za pomocą indeksu lub pętli. Lista jest bardzo pomocna w przechowywaniu dużej ilości danych.
Słownik służy do przechowywania par klucz-wartość. Tutaj klucze muszą być niepowtarzalne. Wartości ze słownika można pobrać za pomocą pętli lub indeksu. Możemy również zweryfikować klucze lub wartości za pomocą metody Contains.
=> Obejrzyj całą serię szkoleń C # tutaj
rekomendowane lektury
- C # samouczek obsługi wyjątków z przykładami kodu
- Python DateTime Tutorial z przykładami
- C # funkcje / metody samouczek z przykładami kodu
- Samouczek SVN: Zarządzanie kodem źródłowym przy użyciu Subversion
- C # String Tutorial - Metody ciągów z przykładami kodu
- Samouczek Tortoise SVN: Zmiany w repozytorium kodu
- Python Tuple Tutorial z praktycznymi przykładami
- Polecenie Ls w systemie Unix z przykładami