5. osa C# Kollektsioonid. Listid ja sõnastikud.

1. ArrayList (System.Collections)

  • Dünaamiline kogum, suurust ei pea ette määrama.
  • Kõige rohkem kasutati vanemates koodides; uues koodis soovitatakse List.

Peamised meetodid

MeetodSelgitus
Add(item)Lisa element lõppu
Contains(item)Kontrolli, kas element on olemas
CountElementide arv
Insert(i,item)Lisa kindlasse kohta
IndexOf(item)Otsi elemendi indeks
Sort()Järjesta kasvavalt

Näide

ArrayList nimed = new ArrayList();
nimed.Add("Kati");
nimed.Add("Mati");
nimed.Add("Juku");

if (nimed.Contains("Mati"))
    Console.WriteLine("Mati olemas");

nimed.Insert(1, "Sass");
Console.WriteLine("Mati indeks: " + nimed.IndexOf("Mati"));
Console.WriteLine("Mari indeks: " + nimed.IndexOf("Mari"));

foreach (string nimi in nimed)
    Console.WriteLine(nimi);


2. Tuple

  • Kindla suuruse ja tüübi andmestruktuur, elemendid võivad olla eri tüüpi.
  • Kasutatakse ajutiste mitme väärtuse hoidmiseks.

Näide

Tuple<float, char> route = new Tuple<float, char>(2.5f, 'N');
Console.WriteLine($"Vahemaa: {route.Item1}, Suund: {route.Item2}");


3. List (System.Collections.Generic)

  • Tugeva tüübiga geneeriline kogum.
  • Kõige sagedamini kasutatav igapäevases arenduses.

Peamised meetodid

MeetodSelgitus
Add(item)Lisa üks element
AddRange(collection)Lisa mitu elementi
IndexOf(item)Otsi indeks
Remove(item)Eemalda element
RemoveAt(index)Eemalda kindel indeks
Insert(index,item)Lisa kindlasse kohta
Sort()Sorteeri
BinarySearch(item)Kiire otsing (mõeldud sorteeritud listile)

Näide

class Person
{
    public string Name { get; set; }
}

List<Person> people = new List<Person>();
people.Add(new Person() { Name = "Kadi" });
people.Add(new Person() { Name = "Mirje" });

foreach (Person p in people)
    Console.WriteLine(p.Name);


4. LinkedList

  • Jadana korraldatud andmestruktuur.
  • Sobib hästi, kui tihti lisada või eemaldada elemente alguses või keskel.

Peamised meetodid

MeetodSelgitus
AddFirst(value)Lisa alguses
AddLast(value)Lisa lõppu
AddBefore(node,value)Lisa enne kindlat sõlme
AddAfter(node,value)Lisa pärast kindlat sõlme
RemoveFirst()Eemalda esimene
RemoveLast()Eemalda viimane
Remove(value)Eemalda kindel väärtus

Näide

LinkedList<int> loetelu = new LinkedList<int>();
loetelu.AddLast(5);
loetelu.AddLast(3);
loetelu.AddFirst(0);

foreach (int arv in loetelu)
    Console.WriteLine(arv);

loetelu.RemoveFirst();
loetelu.RemoveLast();
loetelu.AddLast(555);
loetelu.Remove(555);


5. Dictionary<TKey, TValue> – Sõnastik

  • Võtme-väärtuse paarid.
  • Kiire otsing võtme alusel.

Peamised meetodid

MeetodSelgitus
Add(key,value)Lisa paar
Remove(key)Eemalda paar võtme alusel
ContainsKey(key)Kontrolli võti
ContainsValue(value)Kontrolli väärtus
Keys, ValuesKogu võtmete või väärtuste kogum
dictionary[key] = valueUuenda olemasolev väärtus

Näide

Dictionary&lt;int, string&gt; riigid = new Dictionary&lt;int, string&gt;();
riigid.Add(1, "Hiina");
riigid.Add(2, "Eesti");
riigid.Add(3, "Itaalia");

foreach (var paar in riigid)
    Console.WriteLine($"{paar.Key} - {paar.Value}");

riigid[2] = "Eestimaa";
riigid.Remove(3);

Klassi kasutamine sõnastikus

Dictionary&lt;char, Person&gt; inimesed = new Dictionary&lt;char, Person&gt;();
inimesed.Add('k', new Person() { Name = "Kadi" });
inimesed.Add('m', new Person() { Name = "Mait" });

foreach (var entry in inimesed)
    Console.WriteLine($"{entry.Key} - {entry.Value.Name}");


6. Millal mida kasutada?

AndmetüüpMillal kasutada?
ArrayListLihtsaks prototüüpimiseks (vanem kood)
ListEnamiku tavaliste andmekogumite jaoks
LinkedListKui palju lisada/teha muudatusi keskel
Dictionary<K,V>Kiire otsing võtme alusel
Tuple<T1,T2>Ajutiseks mitme eri tüübi väärtuse hoidmiseks