Avatar billede beles Nybegynder
27. april 2005 - 20:34 Der er 25 kommentarer

lagring i hukommelse

hvad er forskellen på array, arraylist, vektor og hashmap.. hvad er fordelene og ulemperne..
Avatar billede arne_v Ekspert
27. april 2005 - 20:38 #1
array = et antal elementer af en type, ved new kan du bestemme hvor mange elementer
men derefter ligger det fast, elementerne nummererer 0..n-1

ArrayList =et dynamisk array som automatisk udvider sig efter behov, men stadig
nummererer elementerne 0..n-1

HashMap = en struktur hvor du kan gemme key value pairs og kan slå values op
på key (i modsætning til de 2 andre hvor man altid slår op med indexet som er 0..n-1)
Avatar billede webcreator Nybegynder
27. april 2005 - 20:38 #2
Et array har en forud-defineret størrelse - det har en ArrayList ikke (den er dynamisk). En vektor er det samme som en ArrayList så vidt jeg ved.
Mht. HashMap, så må jeg melde pas :)
Avatar billede webcreator Nybegynder
27. april 2005 - 20:38 #3
Sørens - for sent :)
Avatar billede arne_v Ekspert
27. april 2005 - 20:40 #4
array:

fordele - hurtigt
ulemper - fast størrelse efter new, kun opslag på nummer

ArrayList:

fordele - dynamisk udvidelse
ulemper - stadig kun opslag på nummer

HashMap:

fordele - opslag på alle slags keys inklusive String
ulemper - mere besværlig at løbe igennem for alle elementer
Avatar billede beles Nybegynder
27. april 2005 - 20:41 #5
så er hashmap ligesom array, bare med key
Avatar billede arne_v Ekspert
27. april 2005 - 20:42 #6
Hvis du kender PHP:

Java ArrayList = PHP indexed array

Java HashMap = PHP associativt array
Avatar billede arne_v Ekspert
27. april 2005 - 20:43 #7
"bare" ved jeg ikke om er godt udtryk - forskellen er ofte ret stor - men ja
Avatar billede beles Nybegynder
27. april 2005 - 20:43 #8
med arraylist kan man gennemløbe data, men med hashmap tager man en element af gangen eller hva..
Avatar billede webcreator Nybegynder
27. april 2005 - 20:45 #9
Jeg vil da gætte på at du kan iterere igennem begge dele.
På et array kan du fx gøre brug af en såkaldt Enumerator
Avatar billede beles Nybegynder
27. april 2005 - 20:45 #10
der står en anden java bog jeg har hashtabel... det er det samme som hashmap ikke også??
Avatar billede arne_v Ekspert
27. april 2005 - 20:45 #11
Du kan gennemløbe en ArrayList næsten ligesom et simpelt array.

Du kan også gennemløbe en HashMap, men så skal du lave en iterator over keys
og løbe den igennem.
Avatar billede arne_v Ekspert
27. april 2005 - 20:47 #12
Hashtable og HashMap er næste det samme. Der er kun lille forskel med hensyn til den,
måde hvorpå de er beskyttet i multithreaded context.
Avatar billede beles Nybegynder
27. april 2005 - 20:47 #13
hvad betyder det
Avatar billede arne_v Ekspert
27. april 2005 - 20:48 #14
Kode eksempel på gennemløb af HashMap:

      Iterator it = map.keySet().iterator();
      while (it.hasNext()) {
        String key = (String)it.next();
        Integer value = (Integer) map.get(key);
        System.out.println(key + "->" + value);
      }
Avatar billede beles Nybegynder
27. april 2005 - 20:52 #15
tak for hjælpen.. får i så automatisk 200 point eller skal jeg uddele det på en eller anden måde
Avatar billede arne_v Ekspert
27. april 2005 - 20:53 #16
næh vi skal ligge et decideret svar som du så kan acceptere

her er fra mig
Avatar billede webcreator Nybegynder
27. april 2005 - 20:56 #17
Giv du dem bare til Arne. Han trak det tunge læs :)
Avatar billede burningice Nybegynder
28. april 2005 - 00:28 #18
hastighedsmæssigt er der vel også stor forskel hvis man har brug for at slå op på et enkelt object. Hvor man i en ArrayList skal løbe alle objecterne igennem tager det O(n) hvor n er antal af objecter, mens en Hashtable kan gøre det på O(log(n)) tid
Avatar billede kalp Novice
28. april 2005 - 02:07 #19
En fordel med HashMap er også at det er hurtigere at slå sine elementer op.
Avatar billede arne_v Ekspert
28. april 2005 - 07:37 #20
Afhænger af.

situation 1)

array/ArrayList : kender index
HashMap : det man kender er key

array/ArrayList er marginalt hurtigere

situation 2)

array/ArrayList : kender ikke index
HashMap : det man kender er key

HashMap er meget hurtigere

situation 3)

array/ArrayList : kender index
HashMap : det man kender er ikke key

array/ArrayList er meget hurtigere

situation 1)

array/ArrayList : kender ikke index
HashMap : det man kender er ikke key

array/ArrayList er marginalt hurtigere
Avatar billede arne_v Ekspert
28. april 2005 - 07:38 #21
Det bedste valg afhænger af hvad man kender (skal slå op med)
Avatar billede arne_v Ekspert
28. april 2005 - 07:39 #22
Iøvrigt er HashMap ikke O(log(n)) men O(1) når man har en god hash funktion
Avatar billede arne_v Ekspert
28. maj 2005 - 17:08 #23
beles ??
Avatar billede arne_v Ekspert
24. juli 2005 - 17:26 #24
??
Avatar billede kalp Novice
30. september 2005 - 11:55 #25
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
Kurser inden for grundlæggende programmering

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