Unterschied zwischen HashMap und Hashtable

Status
Nicht offen für weitere Antworten.

Ay Caramba

Mitglied
Ich habe mir heute HashMap und Hashtable angeschaut und frage mich jetzt was der Unterschied zwischen den beiden Sachen ist. Für den Anfänger in mir sieht die Syntax identisch aus und beide machen auch das gleiche.
assoziativer speicher, gibt key/value, etc
 

Templon

Bekanntes Mitglied
So weit ich mich erinnere ist es dass die Hashtable synchronized ist und die HashMap nicht (Gleich wie Vector und ArrayList).
 
B

Beni

Gast
Hashtable ist älter und viele Methoden sind synchronized. Man kann daher von mehreren Threads her gleichzeitig auf eine Hashtable zugreiffen - bei einer HashMap funktioniert das nicht. Dafür ist HashMap effizienter, weil es keine Synchronisation gibt.
 

Templon

Bekanntes Mitglied
maki hat gesagt.:
Hashtable ist alt, nutze hashMap.

Naja das stimmt nicht ganz, die Hashtable unterscheidet sich nur durch die synchronized Methoden und sie lässt null zu. Je nach dem kann man das bestimmt gebrauchen.
 
M

maki

Gast
Grasstampfer hat gesagt.:
maki hat gesagt.:
Hashtable ist alt, nutze hashMap.
lol - was für ein unsinniges & falsches argument...

lies einfach mal die beiden API beschreibungen
http://java.sun.com/javase/6/docs/api/java/util/Hashtable.html
http://java.sun.com/javase/6/docs/api/java/util/HashMap.html

The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.
Bla, was für ein überflüssiger Post.

Lies einfach mal die Einführung zur Collection API: http://java.sun.com/j2se/1.4.2/docs/guide/collections/index.html

Dann sollte dir auffallen das Hashtable (genauso wie Vector) veraltet ist, retrofit hin oder her.

Wie man synchronisierte Maps erstellt ist dir aber schon klar? Wenn nicht, einfach fragen...
 

Ay Caramba

Mitglied
Danke für die schnellen Antworten. Das mit null habe ich jetzt auch wieder gesehen.
Bei Hashtable dürfen key,value nicht null sein, bei einer HashMap ist das jedoch erlaubt.

Aber was wird denn ganz konkret mit "synchronisation" gemeint. Kann jemand ein ganz simples Beispiel mit Worten einfach umschreiben?
 

Grasstampfer

Gesperrter Benutzer
maki hat gesagt.:
Grasstampfer hat gesagt.:
maki hat gesagt.:
Hashtable ist alt, nutze hashMap.
lol - was für ein unsinniges & falsches argument...

lies einfach mal die beiden API beschreibungen
http://java.sun.com/javase/6/docs/api/java/util/Hashtable.html
http://java.sun.com/javase/6/docs/api/java/util/HashMap.html

The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.
Bla, was für ein überflüssiger Post.
ändert nix an deiner nicht korrekten aussage ;-)

maki hat gesagt.:
Wie man synchronisierte Maps erstellt ist dir aber schon klar? Wenn nicht, einfach fragen...
nö - nicht mal den blassesten schimmer... brauch ich das ? und wie ? und was sind Maps ?
 
M

maki

Gast
Aber was wird denn ganz konkret mit "synchronisation" gemeint. Kann jemand ein ganz simples Beispiel mit Worten einfach umschreiben?
Synchronisiert (auch Thread-safe genannt) bedeutet vereinfacht, das nur ein Thread auf einmal darauf zugreifen darf, wichtig wenn mehrere Threads auf die Daten zugreifen, sonst ändert unter umständen ein Thread die Daten die ein anderer gerade liest -> undefiniertes Ergebnis

Keine Ahnung ob du das brauchst.

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html#synchronizedMap(java.util.Map)

und was sind Maps ?
Maps ist der plural von map :D
 
M

maki

Gast
Leroy42 hat gesagt.:
maki hat gesagt.:
Hashtable ist alt, nutze hashMap.
ich hat gesagt.:
maki wird alt, nutze Beni.
:bae:
rofl

tfa hat gesagt.:
maki hat gesagt.:
Hashtable ist alt, nutze hashMap.
Ich bin dafür, dass Hashtable und Vector als "deprecated" markiert werden.
Aber das wird Sun wohl nie tun...
Sehe ich genauso, verstehe aber nicht warum sie nicht schon längst deprecated sind.

Quereinsteiger aus anderen Sprachen (zB. Perl) werden sich zuerst darauf stürzen (wiedererkennungswert), verkennen dabei vollkommen die eigentliche Collection API, zB. den Vorteil, gegen Interfaces zu programmieren und die Implementierung austauschbar zu haben, oder selbst mit einer paar Zeilen Code eine neue, an die speziellen Bedürfnisse angepasste Implementierung zu schreiben.

Vorteile von Hashtable/Vector? Sehe ich keine, wirklich nicht.
 

Grasstampfer

Gesperrter Benutzer
maki hat gesagt.:
Quereinsteiger aus anderen Sprachen (zB. Perl) werden sich zuerst darauf stürzen (wiedererkennungswert), verkennen dabei vollkommen die eigentliche Collection API, zB. den Vorteil, gegen Interfaces zu programmieren und die Implementierung austauschbar zu haben, oder selbst mit einer paar Zeilen Code eine neue, an die speziellen Bedürfnisse angepasste Implementierung zu schreiben.

Vorteile von Hashtable/Vector? Sehe ich keine, wirklich nicht.
ok nun mal ernsthaft - klar der Sinn von Hashtable und Vectoren sei mal dahingestellt, aber die beiden als Argument zu nehmen, dass Quereinsteiger die eigentlich Collection API verkennen usw halte ich für übertrieben. Quereinsteiger bzw Anfänger werden anfangs nie gegen ein Interface programmieren, egal ob nun Hashtable oder HashMap....
 
M

maki

Gast
ok nun mal ernsthaft - klar der Sinn von Hashtable und Vectoren sei mal dahingestellt, aber die beiden als Argument zu nehmen, dass Quereinsteiger die eigentlich Collection API verkennen usw halte ich für übertrieben. Quereinsteiger bzw Anfänger werden anfangs nie gegen ein Interface programmieren, egal ob nun Hashtable oder HashMap....
Nun ja, wenn für jeden Thread "List vs. Vector" bzw. "HashMap vs. Hashtable" Sun eine email bekopmmen würde, wären Hashtable und Vector schon deprecated *g*

Sicher, sie funktionieren beide, man könnte sie verwenden, aber...

Ich halte es für Anfänger besser, die beiden nicht zu verwenden, lieber mit List und Map anfangen, es lässt sich doch einfacher erklären, dass anstatt
ArrayList liste = new ArrayList();
besser
List liste = new ArrayList();
verwendet werden sollte, allein schon wegen den vewendeten Namen.

Ausserdem haben Vector und Hashmap ein paar Methoden, die einfach nur noch "legacy" sind.
Man könnte ja noch Hashtable#elements verwenden und hätte es dann wieder mit den "guten alten" Enumerations zu tun

Ich halte das für (Quer-)einsteiger verwirrender, als die klare Linie des Collection Frameworks.

Sowohl Vector als auch Hashtable sind redundant, die API wäre ohne sie besser dran imho, geht einem ja nichts verloren, Map und List ersetzen sie vollständig.
 
M

maki

Gast
Was mich etwas verwundert ist, dass Swing nicht angepasst wurde als das Collection Framework mit Java 1.2 eingeführt wurde.
Aber, Sun will kompatibel zu Java 1.0.2 sein, naja, das ist ja mal ein Argument...
 

tfa

Top Contributor
Wenn die das getan hätten, wäre verdammt viel alter Code einfach mal so kaputt gegangen. Als API-Anbieter kannst du das nicht machen. Vielleicht bei irgend einer kleinen Lib, die ewig im Alpha-Stadium rumdümpelt. Aber nicht, wenn man eine Programmiersprache groß machen will.
Es gibt noch viel mehr Hässlichkeiten: Stack, Date, Boolean- und String-Konstruktor. Das wird man nicht mehr los.
 
M

maki

Gast
Es gibt noch viel mehr Hässlichkeiten: Stack, Date, Boolean- und String-Konstruktor. Das wird man nicht mehr los.
So wie Date, URL & Konsorten.

Vielleicht gibt es RFEs die einfach höhere Prioritäten haben.
 
S

SlaterB

Gast
kompatibel bleiben kann man ja, aber eben alles mit Vector auch in den Swing-Klassen auf deprecated setzen und List dazubauen,
so sieht mancher erst eine JTable/ JComboBox und glaubt, einen Vector benutzen zu müssen (muss man ja quasi auch an manchen Stellen)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
V Unterschied zwischen J2EE und JEE ?? Java Basics - Anfänger-Themen 1
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
A Unterschied zwischen Checked und unchecked Exception Java Basics - Anfänger-Themen 3
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
G Unterschied zwischen den Datenstrukturen Java Basics - Anfänger-Themen 2
M Unterschied zwischen . Compiler und JIT-Compiler,Hotspot-VM Java Basics - Anfänger-Themen 2
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
I_Oscuridad Unterschied zwischen Objektorientiert und prozedural ? Java Basics - Anfänger-Themen 8
G Was ist der unterschied zwischen return und ? Java Basics - Anfänger-Themen 3
G Unterschied zwischen Java 2 bis 6 Java Basics - Anfänger-Themen 12
G Unterschied zwischen SwingWorker und "normalem" Th Java Basics - Anfänger-Themen 3
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
G unterschied zwischen in.read() und in.read(byte [] b, int. Java Basics - Anfänger-Themen 3
G Unterschied zwischen SQL Timestamp und Java Java Basics - Anfänger-Themen 2
G Unterschied zwischen Assoziation, Aggregation u. Komposition Java Basics - Anfänger-Themen 7
G Unterschied zwischen & und && Java Basics - Anfänger-Themen 1
G Unterschied zwischen Ant und Maven Java Basics - Anfänger-Themen 9
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
G Was ist der Unterschied zwischen length und length()? Java Basics - Anfänger-Themen 7
N Unterschied zwischen Beans finden Java Basics - Anfänger-Themen 2
L Unterschied zwischen Objekten, Arrays und Strings Java Basics - Anfänger-Themen 2
G Unterschied zwischen Integer und int in java Java Basics - Anfänger-Themen 8
C Unterschied zwischen, Applet, Java und JavaScript Java Basics - Anfänger-Themen 3
K gibt es einen unterschied zwischen .JAVA und .java ? Java Basics - Anfänger-Themen 4
ven000m Unterschied zwischen: ADT & generischer Programmierung Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
C Unterschied zwischen equals und == ? Java Basics - Anfänger-Themen 6
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
M Unterschied zwischen J2SE, JSEE und JDK Java Basics - Anfänger-Themen 8
R Unterschied zwischen a++ und ++a Java Basics - Anfänger-Themen 9
G Unterschied zwischen homogenen und heterogenen Liste Java Basics - Anfänger-Themen 9
D Unterschied zwischen Ziffer und Zahl Java Basics - Anfänger-Themen 9
R Unterschied zwischen Integer und int Java Basics - Anfänger-Themen 6
B Was ist der Unterschied zwischen .java- und .class Dateien Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben