Avatar billede noobsaibot Nybegynder
09. november 2005 - 10:56 Der er 10 kommentarer og
1 løsning

Hashtable contra ArrayList

Hvad er forskellen på Hashtable og ArrayList?
Hvordan fungerer Hashtable?
Er der, nogen der kender nogen gode artikler / tutorials om Hashtable?

På forhånd tak!
Avatar billede arne_v Ekspert
09. november 2005 - 11:02 #1
En ArrayList har N objekter liggende nummereret fra 0 til N-1

En Hashtable har N par af key og value liggende

Eksempel:
  - du kan gemme instanser af en Person klasse i en ArrayList og de kan så hentes
    i en rækkefølge
  - du kan gemme instanser af en Person klasse i en HashTable med Name som key
    og objektet som value så du kan slå dem op på navn
Avatar billede noobsaibot Nybegynder
09. november 2005 - 11:05 #2
Så det vil sige, at Hashtable er hurtigere at søge igennem, mens ArrayList kan give en sorteret rækkefølge?

Har du et kode-eksempel?
Avatar billede arne_v Ekspert
09. november 2005 - 11:08 #3
Hashtable er hurtigere at slå op i hvis det ikke er på nummer.

Arraylist er i en rækkefølge og kan sorteres til en anden.
Avatar billede noobsaibot Nybegynder
09. november 2005 - 11:08 #4
Jeg forstår ikke helt hvornår man skal anvende Hashtable og hvor man skal anvende ArrayList..
Avatar billede arne_v Ekspert
09. november 2005 - 11:11 #5
eksempel på ArrayList:

using System;
using System.Collections;

class MainClass
{
    public static void Main(string[] args)
    {
        ArrayList lst1 = new ArrayList();
        lst1.Add("A");
        lst1.Add("BB");
        lst1.Add("CCC");
        lst1.Add("BB");
        lst1.Add("A");
        foreach(string elm in lst1) Console.WriteLine(elm);
        lst1.Sort();
        foreach(string elm in lst1) Console.WriteLine(elm);
    }
}
Avatar billede arne_v Ekspert
09. november 2005 - 11:12 #6
eksempel på Hashtable:

using System;
using System.Collections;

class MainClass
{
    public static void Main(string[] args)
    {
        Hashtable ht = new Hashtable();
        ht.Add("A", "Dette er A");
        ht.Add("B", "Dette er B");
        ht.Add("C", "Dette er C");
        Console.WriteLine((string)ht["B"]);
        IDictionaryEnumerator en = ht.GetEnumerator();
        en.MoveNext();
        Console.WriteLine((string)en.Value);
    }
}
Avatar billede arne_v Ekspert
09. november 2005 - 11:13 #7
det plejer ikke at være så svært at finde anledning til at bruge de to
Avatar billede noobsaibot Nybegynder
09. november 2005 - 11:24 #8
mkay - smid et svar..
Avatar billede arne_v Ekspert
09. november 2005 - 11:26 #9
svar
Avatar billede spif2001 Nybegynder
09. november 2005 - 13:13 #10
Med en hashtable er du tit fri for at køre en løkke igennem for at finde et objekt.

Har du f.eks. fyldt en ArrayList med Person objekter og skal finde Hans, er du nødt til at løbe listen igennem for at finde objektet med Hans som navn a la:

Person temp;
foreach(Person p in personList)
{
  if(p.Name == "Hans")
  {
    temp = p;
    break;
  }
}

med en hashtable hvor du har brugt navn som key gør du bare sådan:

Person temp = (Person)personList["Hans"];
Avatar billede runesoft Nybegynder
14. november 2005 - 21:21 #11
Forskellen er at ArrayList implementerer IList og HashTable implementerer IDictionary
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester