Tablica mieszająca C# z przykładami
⚡ Inteligentne podsumowanie
Hashtable w języku C# to kolekcja z przestrzeni nazw System.Collections przechowująca dane jako pary klucz-wartość, gdzie każdy unikatowy klucz jest odwzorowywany na wartość, a klucz umożliwia szybkie wyszukiwanie tej przechowywanej wartości.

Co to jest Hashtable w C#?
Tabela mieszająca to specjalna kolekcja używana do przechowywania elementów klucz-wartość. Zamiast więc przechowywać tylko jedną wartość, taką jak stos, lista tablic i kolejka, tabela mieszająca przechowuje 2 wartości. Te 2 wartości tworzą element tablicy mieszającej.
Poniżej znajduje się przykład tego, jak mogą wyglądać wartości tabeli mieszającej.
{ "001" , ".Net" }
{ "002" , ".C#" }
{ "003" , "ASP.Net" }
Powyżej mamy 3 pary klucz-wartość. Klucze każdego elementu to odpowiednio 001, 002 i 003. Wartości każdej pary klucz-wartość to „. NettoOdpowiednio „, „C#” i „ASP.Net”.
Przyjrzyjmy się bliżej operacjom dostępnym dla kolekcji Hashtable.
Deklaracja Hashtable
Poniżej pokazano deklarację Hashtable. Hashtable jest tworzony za pomocą typu danych Hashtable. Słowo kluczowe „new” służy do tworzenia obiektu Hashtable. Obiekt zostaje następnie przypisany do zmiennej ht.
Hashtable ht = new Hashtable()
Dodawanie elementów do Hashtable
Metoda Add służy do dodawania elementu do kolejka. Ogólna składnia instrukcji jest podana poniżej
HashTable.add("key","value")
1 przykład:
Pamiętaj, że każdy element tablicy mieszającej składa się z 2 wartości, jedna jest kluczem, a druga wartością.
Zobaczmy teraz, jak to działa na poziomie kodu. Cały poniższy kod zostanie zapisany w naszej aplikacji konsolowej.
Kod zostanie zapisany w naszym pliku Program.cs. W poniższym programie napiszemy kod, aby zobaczyć, jak możemy wykorzystać powyższe metody.
Na razie w naszym przykładzie przyjrzymy się tylko, jak możemy utworzyć tablicę haszującą, dodać elementy do tablicy mieszającej i odpowiednio je wyświetlić.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); ICollection keys = ht.Keys; foreach (String k in keys) { Console.WriteLine(ht[k]); } Console.ReadKey(); } } }
Code Wyjaśnienie:-
- Najpierw deklarujemy zmienną hashtable, używając typu danych Hashtable, używając słowa kluczowego „Nowy”. Nazwa zdefiniowanej zmiennej to „ht”.
- Następnie dodajemy elementy do tabeli skrótów za pomocą metody Add. Pamiętaj, że podczas dodawania czegoś do tablicy mieszającej musimy dodać zarówno element klucza, jak i wartości.
- Nie ma bezpośredniego sposobu wyświetlania elementów tabeli mieszającej.
- Aby wyświetlić tablicę mieszającą, musimy najpierw pobrać listę kluczy (001, 002 i 003) z tablicy mieszającej.
- Odbywa się to poprzez interfejs ICollection. Jest to specjalny typ danych, który może być używany do przechowywania kluczy kolekcji hashtable. Następnie przypisujemy klucze kolekcji hashtable do zmiennej „keys”.
- Następnie dla każdej wartości klucza uzyskujemy powiązaną wartość w tablicy skrótów za pomocą instrukcji ht[k].
Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący wynik.
Wyjście:
Przyjrzyjmy się innym metodom dostępnym dla tabel skrótów.
Zawiera klucz
Ta metoda służy do sprawdzania, czy klucz znajduje się w Hashtable. Poniżej znajduje się ogólna składnia tego stwierdzenia. Instrukcja zwróci wartość true, jeśli klucz istnieje, w przeciwnym razie zwróci wartość false.
Hashtable.Containskey(key)
ZawieraWartość
Ta metoda służy do sprawdzania, czy wartość znajduje się w Hashtable. Poniżej znajduje się ogólna składnia tego stwierdzenia. Instrukcja zwróci wartość true, jeśli wartość istnieje, w przeciwnym razie zwróci wartość false.
Hashtable.ContainsValue(value)
2 przykład:
Zmieńmy kod w naszym Aplikacja konsoli aby pokazać, jak możemy wykorzystać metody „Containskey” i „ContainsValue”.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); Console.WriteLine(ht.ContainsKey("001")); Console.WriteLine(ht.ContainsValue("C#")); Console.ReadKey(); } } }
Code Wyjaśnienie:-
- Najpierw używamy metody ZawieraKey, aby sprawdzić, czy klucz znajduje się w tablicy mieszającej. Ta metoda zwróci wartość true, jeśli klucz znajduje się w tablicy mieszającej. Ta metoda powinna zwrócić wartość true, ponieważ klucz istnieje w tablicy skrótów.
- Następnie używamy metody ZawieraValue, aby sprawdzić, czy wartość znajduje się w tablicy mieszającej. Ta metoda zwróci wartość „true”, ponieważ wartość istnieje w tablicy skrótów.
Jeżeli powyższy kod zostanie wpisany poprawnie i program zostanie uruchomiony, wyświetlony zostanie następujący wynik.
Wyjście:
Z danych wyjściowych wyraźnie wynika, że zarówno szukany klucz, jak i wartość znajdują się w tabeli skrótów.
Jak przejść przez tablicę mieszającą C#
Powyższe przykłady odczytują wartości z kolekcji kluczy (Keys), ale tablicę mieszającą (Hashtable) można przeglądać w bardziej przejrzysty sposób. Pętla foreach na obiekcie DictionaryEntry przekazuje klucz i wartość każdego elementu w jednym przebiegu, co jest najczęstszym sposobem odczytu tablicy mieszającej.
Krok 1) Utwórz tablicę mieszającą i dodaj do niej trzy pary klucz-wartość.
Krok 2) Przejrzyj tablicę Hashtable ze zmienną DictionaryEntry, a następnie odczytaj właściwości Key i Value każdego wpisu.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("101", "Java"); ht.Add("102", "Python"); ht.Add("103", "Kotlin"); foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " - " + entry.Value); } Console.ReadKey(); } } }
Code Wyjaśnienie:-
- Tworzona jest tablica mieszająca o nazwie ht, a następnie za pomocą metody Add wstawiane są do niej trzy pary klucz-wartość.
- Pętla foreach przypisuje każdy element do DictionaryEntry, którego właściwości Key i Value ujawniają dwie połowy pary.
Po uruchomieniu programu, każdy klucz jest wyświetlany obok jego wartości, np. 101 – JavaPonieważ tablica skrótów nie zachowuje kolejności wstawiania, pary mogą pojawić się w innej kolejności niż zostały dodane. Aby odczytać tylko klucze, wykonaj pętlę po kolekcji kluczy, a aby odczytać tylko wartości, wykonaj pętlę po kolekcji wartości.
Metody i właściwości tablicy mieszającej w C#
Klasa Hashtable udostępnia niewielki zestaw metod i właściwości, które obejmują niemal wszystkie potrzebne zadania, od dodawania i usuwania par po sprawdzanie przynależności i zliczanie elementów. Poniżej wymieniono najbardziej przydatne właściwości.
| Członek | Typ | OPIS |
|---|---|---|
| Dodaj(klucz, wartość) | Metoda wykonania | Wstawia nową parę klucz-wartość; klucz musi być unikalny. |
| Usuń(klawisz) | Metoda wykonania | Usuwa element pasujący do określonego klucza. |
| Jasne() | Metoda wykonania | Usuwa każdą parę klucz-wartość z tablicy mieszającej. |
| ZawieraKlucz(klucz) | Metoda wykonania | Zwraca wartość true, jeśli podany klucz jest obecny. |
| ZawieraWartość(wartość) | Metoda wykonania | Zwraca wartość true, jeżeli podana wartość jest obecna. |
| Liczyć | Właściwość | Pobiera liczbę zapisanych par klucz-wartość. |
| Klucze | Właściwość | Zwraca kolekcję wszystkich kluczy. |
| Wartości | Właściwość | Zwraca kolekcję wszystkich wartości. |
Ponieważ każdy klucz jest haszowany, ContainsKey i indeksator lokalizują element w niemal stałym czasie, co sprawia, że tablica mieszająca jest tak przydatna do szybkich wyszukiwań.
Różnica między tablicą mieszającą a słownikiem w C#
Zarówno tablica mieszająca, jak i słownik przechowują pary klucz-wartość i oba należą do szerszej rodziny języka C# kolekcjeWażną różnicą jest bezpieczeństwo typu, a to właśnie ono decyduje, po którą z nich należy sięgnąć w nowym kodzie.
- Bezpieczeństwo typu: Tablica mieszająca przechowuje każdy klucz i wartość jako obiekt, podczas gdy słownik jest generyczny, więc kompilator sprawdza używane typy.
- Przestrzeń nazw: Tablica mieszająca znajduje się w System.Collections, natomiast słownik znajduje się w System.Collections.Generic.
- BoxNS: Tablica mieszająca przechowuje typy wartości, takie jak int, natomiast słownik ogólny przechowuje je bezpośrednio, unikając tym samym tego kosztu.
- Wydajność: Słownik jest zwykle szybszy, ponieważ nie wymaga rzutowania wstecz z obiektu podczas odczytywania wartości.
- Bezpieczeństwo gwintów: Hashtable oferuje Synczsynchronizowany wrapper dla jednego autora z wieloma czytelnikami, podczas gdy kod współbieżny zwykle wybiera ConcurrentDictionary.
W przypadku każdego nowego projektu zalecanym wyborem jest generyczny słownik, natomiast niegeneryczna tablica skrótów pojawia się głównie w starszym kodzie.




