c list dictionary tutorial with code examples
Denna handledning förklarar C # List And Dictionary med exempel. Du kommer att lära dig att initiera, fylla i och komma åt element i C # ordbok och lista:
I vår tidigare handledning om C # samlingar lärde vi oss om vilka typer av samlingar som finns i C # som ArrayList, Hashtable, Stack, SortedList, etc. Det som är vanligt bland dessa samlingstyper är att de kan lagra vilken typ av data som helst.
Detta verkar ganska användbart för att lagra olika datatyper i en enda samlingsenhet, men nackdelen är att när du hämtar data från samlingen krävs datakastning till en tillämplig datatyp. Utan datakast kommer programmet att kasta ett runtime-undantag och kan hämma applikationen.
=> GRATIS C # -utbildningar för alla
För att lösa dessa problem erbjuder C # också generiska insamlingsklasser. En generisk samling ger bättre prestanda under lagring och hämtning av artiklarna.
Vad du kommer att lära dig:
C # Lista
Vi har redan lärt oss om ArrayList i tidigare artiklar. I grund och botten liknar en lista en ArrayList, den enda skillnaden är att listan är generisk. Listan har en unik egenskap att utvidga storleken när den växer, liknar matrislistan.
Hur initiera en lista?
Vi kan initialisera en lista på följande sätt:
//using List type for initialization List listInteger = new List(); //using IList type for initialization IList listString = new List();
Om du tittar på exemplet ovan kan du se att vi på första raden har använt List för att initialisera en heltalslista. Men i andra raden har vi använt IList för initialisering av stränglistan. Du kan använda någon av dessa för ditt program. Listan är faktiskt implementeringen av gränssnittet IList.
Hur lägger jag till och infogar element i listan?
På samma sätt som ArrayList kan vi lägga till ett element i listan med metoden Lägg till (). Add-metoden accepterar datatypsvärde som ett argument.
Syntax
ListName.Add(DataType value);
Låt oss titta på ett enkelt program för att lägga till data i en lista och 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(); } }
Elementet kan också läggas till direkt medan listan initialiseras. Vi kan lägga till värdet direkt i listan vid själva initialiseringen, på samma sätt som vi gjorde under vårt Arrays-kapitel.
Detta kan läggas till genom att placera lockiga parenteser efter listan och sedan skriva in värdet inuti det separerade med kommatecken. Låt oss ändra ovanstående program lite så att vi kan lägga till värdet direkt under initialiseringen.
stresstestverktyg för webbapplikation
Så vårt program kommer nu att se ut:
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(); } }
I ovanstående program initialiserade vi värdena för heltalslistan i början under initialiseringen. Det gjorde att vi kunde skicka värdet direkt utan att skriva Add () -metoden för varje värde. Detta är ganska användbart om vi har en begränsad kvantifierbar mängd data som vi behöver lägga in i en lista.
Hur får jag tillgång till listan?
Vi kan komma åt enskilda objekt från listan med hjälp av indexet. Indexet kan skickas i hakparentes efter listans namn.
Syntax
dataType Val = list_Name(index);
Låt oss nu titta på ett enkelt program för att hämta data från listan som vi skapade i vårt tidigare program.
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); } }
Utgången för följande program kommer att vara värdet vid index 1. Indexet börjar från 0, utgången blir:
två
Låt oss säga att vi vill hämta all data från listan, vi kan göra detta genom att använda för varje slinga eller för en slinga.
För varje slinga
Vi kan använda för varje slinga för att få all information från listan.
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); } } }
Här har vi gått igenom listan med hjälp av för varje slinga genom att deklarera ett variabelt värde. Detta gör det möjligt för varje slinga genom listan tills det finns lite data i den.
För Loop
För att använda för loop behöver vi veta antalet element som finns i listan. Count () -metoden kan användas för att få räkningen av elementet.
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; iNågon gång kan vi också behöva infoga ett nytt element i listan. För att göra det måste vi använda Insert () -metoden för att lägga till ny metod var som helst i listan. Insättningsmetoden accepterar två argument, det första är det index där du vill infoga data och det andra är den data du vill infoga.
Syntaxen för insatsen är:
hur man använder en .jar-fil
List_Name.Insert(index, element_to_be_inserted);
Nu ska vi infoga ett element i listan vi skapade tidigare. Vi lägger till ett infogningsuttalande till ovanstående program och försöker se hur det fungerar:
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 Om vi utför ovanstående program blir resultatet:
ett
två
3
Listvärde efter införande av ny val
ett
22
två
3
Efter for-slingan lade vi till insättningsuttrycket för att infoga heltal 22 vid index 1 i den tidigare definierade listan. Sedan skrev vi a för varje slinga för att skriva ut alla element som nu finns i listan (Efter att ha lagt in de första uppgifterna).
Vi kan tydligt se från produktionen att alla element i listan har flyttats framåt för att ge plats för det nya elementet vid index 1. Indexet 1 har nu 22 som ett element och det tidigare elementet vid index 1 dvs. 2 har flyttats till nästa index och så vidare.
Hur tar jag bort ett element från listan?
Någon gång kan vi också behöva ta bort objekt från listan. För att göra det erbjuder C # två olika metoder. Dessa två metoder är Ta bort () och Ta bort (). Ta bort används för att ta bort ett visst element från listan och RemoveAt används för att ta bort alla element som finns i det angivna indexet.
Låt oss titta på syntaxen.
Syntax
Remove(Element name); RemoveAt(index);
Nu ska vi lägga till Ta bort uttalande till föregående kod och se vad som händer.
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 Resultatet från ovanstående program kommer att vara:
ett
två
3
Tar bort värde från listan
ett
3
I ovanstående program har vi använt borttagningsmetoden för att ta bort element 2 från listan. Som du kan se i utgången när metoden Ta bort har körts innehåller listan inte längre det element som vi tog bort.
På samma sätt kan vi också använda metoden RemoveAt. Låt oss ersätta metoden Ta bort i ovanstående program med metoden RemoveAt () och skicka indexnummer som parameter.
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 Resultatet från ovanstående program kommer att vara:
ett
två
3
Tar bort värde från listan
ett
två
I ovanstående program kan du tydligt se att vi har tagit bort elementet som finns i index 2 snarare än att ta bort heltalet. Beroende på kravet kan man använda antingen Ta bort () eller Ta bortAt () för att ta bort ett visst element från en lista.
C # ordbok
Ordbok i C # liknar ordboken vi har på vilket språk som helst. Även här har vi en samling ord och deras betydelser. Orden är kända som nycklar och deras betydelse eller definition kan definieras som värden.
Ordbok accepterar två argument, det första är nyckeln och det andra är värdet. Det kan initieras med hjälp av en variabel i antingen ordboksklass eller IDictionary-gränssnitt.
Syntaksen för ordbok är:
Dictionary
Låt oss titta på ett enkelt program för att initiera ordlistan:
Dictionary data = new Dictionary();
I ovanstående program kan du tydligt se att vi har initierat ordboksdata med både nyckel och värde som en sträng. Men du kan använda valfritt datatypspar för nycklar och värden. Till exempel, om vi ändrar ovanstående uttalande för att innehålla en annan datatyp kommer det också att vara korrekt.
Dictionary data = new Dictionary();
Datatypen i vinkelfästet är för tangenter och värden. Du kan behålla vilken datatyp som nyckel och värde.
Hur lägger man till nycklar och värden till en ordbok?
Vi såg hur vi kan initialisera en ordlista. Nu lägger vi till nycklar och deras värden i ordlistan. Ordboken är ganska användbar när du vill lägga till olika data och deras värden i en lista. Metoden Lägg till () kan användas för att lägga till data i ordlistan.
Syntax
DictionaryVariableName.Add(Key, Value);
Låt oss nu inkludera Lägg till uttalande i ovanstående program för att lägga till nycklar och värden i ordlistan.
Program
class Program { static void Main(string() args) { Dictionary dctn = new Dictionary(); dctn.Add('one', 'first'); dctn.Add('two', 'second'); dctn.Add('three', 'Third'); } }
I ovanstående program har vi använt metoden Lägg till () för att lägga till nyckel och värden i ordlistan. Den första parametern som skickas till Add () -metoden är nyckeln och den andra parametern är värdet på nyckeln.
Hur får du tillgång till nycklar och värden från en ordbok?
Som diskuteras i vår handledning på listan kan vi också komma åt element från ordboken på flera olika sätt. Vi kommer att diskutera några av de viktiga sätten att komma åt det här. Vi kommer att diskutera för loop, för varje loop och index för åtkomst till dataobjekt.
Indexet kan användas för att komma åt specifika värden från listan.
For loop kan användas för att komma åt eller hämta alla element från ordboken men kräver storleken på ordboken för att stoppa slingan. För varje slinga är mer flexibel kan den hämta all data som finns från ordboken utan att ordbokens storlek krävs.
Använda indexering
Ett element från indexet kan användas som en matris för att komma åt elementet, den grundläggande skillnaden är att vi istället för index behöver tangenter för att komma åt värdena.
Syntax
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(); } }
Resultatet från ovanstående program kommer att vara:
andra
Använder For Loop för åtkomst till element
For-loop kan användas för att komma åt alla element i ordboken. Men det måste också få antalet element i ordboken för ett antal iterationer som krävs.
Låt oss lägga till slinga till ovanstående program för att hämta alla värden från ordboken.
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 Resultatet från ovanstående program kommer att vara:
Elementet vid nyckel: ett och dess värde är: först
Elementet vid nyckel: två och dess värde är: andra
Elementet vid nyckel: tre och dess värde är: Tredje
vilket av följande ger ett fjärrprogram som ser ut och känns som en lokal applikation?
I ovanstående program har vi använt metoden ElementAt () för att få nyckeln vid ett visst index, sedan använde vi samma nyckel för att hämta data för nyckelvärdet. For loop går igenom alla data i ordlistan. Count-egenskapen har använts för att få storleken på ordboken för iteration.
Använda för varje slinga
På samma sätt som för loop kan vi också använda för varje loop.
Låt oss ta en titt på ovanstående program med för varje slinga.
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(); } }
Resultatet från ovanstående program kommer att vara:
Nyckeln är: en - Värdet är: först
Nyckeln är: två - Värdet är: andra
Nyckeln är: tre - Värdet är: Tredje
Ovanstående program använder KeyValuePair för att deklarera variabeln, sedan upprepas vi genom vart och ett av nyckel-värdeparen i ordboken och skriver ut det till konsolen.
Hur validerar jag förekomsten av data i en ordbok?
Ibland måste vi verifiera om en viss nyckel eller ett värde finns i ordboken eller inte. Vi kan validera detta genom att använda två metoder, dvs. ContainsValue () och ContainsKey () för att söka efter den befintliga nyckeln eller värdet i ordboken.
Metoden innehåller innehåller för att validera om det angivna värdet finns i ordboken eller inte. Metoden ContainsKey används för att kontrollera om en viss nyckel finns i ordboken eller inte.
Syntax
Dictionary_Name.ContainsValue(Value); Dictionary_Name.ContainsKey(Key);
Låt oss skriva ett enkelt program för att validera med metoden Contains och 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(); } }
Resultatet från ovanstående program kommer att vara:
Den viktigaste är tillgänglig: True
Värdet fyra är tillgängligt: Falskt
I ovanstående program använde vi först ContainsKey-metoden för att validera om den angivna nyckeln finns i ordboken. Eftersom nyckeln finns i ordboken returnerar metoden true. Sedan använder vi ContainsValue för att avgöra om det angivna värdet är närvarande eller inte. Eftersom värdet 'fyra' inte finns i ordlistan kommer det att returnera falskt.
Hur tar jag bort ett element från en ordbok?
Det kan finnas en tid då vi kommer att behöva ta bort ett visst nyckel-värdepar från ordboken för att uppfylla viss programmeringslogik. Metoden Ta bort kan användas för att ta bort valfritt par från ordboken baserat på nyckeln.
Syntax
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(); } }
Resultatet från ovanstående program kommer att vara:
Nyckeln två är tillgänglig: Falsk
I programmet ovan har vi lagt till ett nyckel-värdepar i ordboken. Sedan tog vi bort en nyckel från ordboken och vi använde metoden ContainsKey () för att validera om nyckel-värdeparet inte längre finns i ordboken.
Slutsats
Listan lagrar element av den specifika datatypen och växer när artiklar läggs till. Det kan också lagra flera dubbletter. Vi kan enkelt komma åt objekt i listan med hjälp av index eller loopar. Listan är till stor hjälp vid lagring av en stor mängd data.
En ordbok används för att lagra nyckel-värdepar. Här måste nycklarna vara unika. Värden från ordboken kan hämtas med en slinga eller ett index. Vi kan också validera nycklar eller värden med metoden Innehåller.
=> Se hela C # Training Series här
Rekommenderad läsning
- C # Handledning för undantagshantering med kodexempel
- Python DateTime-handledning med exempel
- C # -funktioner / metodhandledning med kodexempel
- SVN-handledning: Källkodshantering med subversion
- C # Stränghandledning - Strängmetoder med kodexempel
- Tortoise SVN Tutorial: Revisions In Code Repository
- Python Tuple-handledning med praktiska exempel
- Ls Command i Unix med exempel