[Java]HasMap of Hastable

Pagina: 1
Acties:

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Kan iemand mij het verschil vertellen tussen een HasMap en een Hastable?

Wat zijn de voordelen en nadelen

Ik heb zelf gelezen dat een HashMap hetzelfde is als een Hastable alleen dat een HasMap niet gesynchroniseerd is. En dat dit alleen "gevaarlijk" is als je met meerde threads dingen gaat aanpassen in de HashMap.

Weet iemand nog ander voordelen of nadelen waarom ik een HasMap of een Hastable zou kiezen?

http://www.slobmotorsport.nl - iRacing Profiel


  • reskobon
  • Registratie: November 2001
  • Laatst online: 13:24
HashMap: http://java.sun.com/j2se/...pi/java/util/HashMap.html
HashTable: http://java.sun.com/j2se/.../java/util/Hashtable.html

denk dat als je dit doorleest wel het een en ander te weten komt :)

Leeg


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
HashMap (net als Vector) is van voor Collections, waardoor hij eerst niet in het CollectionFramework zit.
Dit is echter aangepast in Java 1.2, waardoor er het enige feitelijke verschil tussen HashMap en HashTable (ik geloof zelfs dat HashTable HashMap gebruikt als parent) is dat HashTable wel synchronized is.

Is voornamelijk gedaan om code compatible te houden dus :)

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
mjah dat had ik dus door gelezen en daar stond dit in:
The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls
dus... wat betekent dat roughly

http://www.slobmotorsport.nl - iRacing Profiel


  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Glimi schreef op 03 december 2002 @ 13:15:
HashMap (net als Vector) is van voor Collections, waardoor hij eerst niet in het CollectionFramework zit.
Dit is echter aangepast in Java 1.2, waardoor er het enige feitelijke verschil tussen HashMap en HashTable (ik geloof zelfs dat HashTable HashMap gebruikt als parent) is dat HashTable wel synchronized is.

Is voornamelijk gedaan om code compatible te houden dus :)
aha, dus ik kan beter gewoon een hastable gebruiken?

http://www.slobmotorsport.nl - iRacing Profiel


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
the_Emperor schreef op 03 December 2002 @ 13:18:
aha, dus ik kan beter gewoon een hastable gebruiken?

Synchronisation kost cycles.
De keuze is dus simpel: Heb je meedere threads die op de HashTable gaan hakken, dan een HashTable. Heb je geen meedere threads, of heb je er een dispatch thread op zitten, dan gewoon een HashMap

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

(The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.)
[edit]
aha.. ik zie dat iemand dat al had gezegd :z

[ Voor 19% gewijzigd door Alarmnummer op 03-12-2002 13:30 ]


  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Glimi schreef op 03 december 2002 @ 13:21:

[...]

Synchronisation kost cycles.
De keuze is dus simpel: Heb je meedere threads die op de HashTable gaan hakken, dan een HashTable. Heb je geen meedere threads, of heb je er een dispatch thread op zitten, dan gewoon een HashMap
ok HasMap dus tnx

http://www.slobmotorsport.nl - iRacing Profiel


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Kan je voor synchronization niet ook zoiets als
code:
1
Map mijnMap = Collections.synchronizedMap(new HashMap());

doen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet eigelijk nog minder vast gaan zitten aan een implementatie. Ik doe zelf meestal dit:

List _p = new ArrayList();

en als ik later een Vector wil gebruiken of een linkedlist, dan hoef ik dat maar op 1 plek aan te passen. Voor een HashMap kan je hetzelfde doen:

Map _p = new HashMap();

Verwijderd

offtopic:
Heb je slechte ervaringen met hash?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Dash2in1 schreef op 03 December 2002 @ 13:34:
Kan je voor synchronization niet ook zoiets als
code:
1
Map mijnMap = Collections.synchronizedMap(new HashMap());

doen?
Als het aan mij lag gingen veel gesynchroniseerde structuren door deze consructies vervangen worden. De Vector en de HashTable kunnen om mij part er dus idd uit.

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Hmm, was het niet zo dat Vector wel garandeert dat degene die je het eerste er in stopt ook als eerste er uit komt? Kan wel eens handig zijn... Om nu er voor te zorgen dat je een timestamp gebruikt in een SortedMap, lijkt me wat overdreven als het puur daar om zou gaan.
Het kan natuurlijk ook zo zijn dat Vector dat niet garandeert, dan ben ik het best met je eens :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Dash2in1 schreef op 03 December 2002 @ 13:42:
Hmm, was het niet zo dat Vector wel garandeert dat degene die je het eerste er in stopt ook als eerste er uit komt? Kan wel eens handig zijn... Om nu er voor te zorgen dat je een timestamp gebruikt in een SortedMap, lijkt me wat overdreven als het puur daar om zou gaan.
Het kan natuurlijk ook zo zijn dat Vector dat niet garandeert, dan ben ik het best met je eens :)
Ik snap niet helemaal wat je bedoelt met die vector. Een vector is een List structuur en daar is de locatie van een element ook van belang en dat zal bij die andere List implementaties ook moet gelden. Dus misschien ken je ff een liggie op mij schijnen? *hmm.. moet minder slechte muziek gaan luisteren :P *

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Ik had eigenlijk de link tussen je reply op mijn reply en de reply waarin je:
List _p = new ArrayList();
zei, niet gelegd |:( :) Nvm dus.
Pagina: 1