Begrenzung der maximalen Größe einer HashMap in Java
Möchte ich begrenzen die maximale Größe einer HashMap
zu nehmen Metriken, die auf eine Vielzahl von hashing-algorithmen, dass ich die Umsetzung. Ich schaute auf die loadfactor in einem HashMap
's überladenen Konstruktoren.
HashMap(int initialCapacity, float loadFactor)
Ich habe versucht Einstellung der loadFactor, 0.0 f in den Konstruktor (was bedeutet, dass ich nicht wollen, dass die HashMap, in der Größe wachsen auch IMMER) aber javac
nennt diese ungültig:
Exception in thread "main" java.lang.IllegalArgumentException: Illegal load factor: 0.0
at java.util.HashMap.<init>(HashMap.java:177)
at hashtables.CustomHash.<init>(Main.java:20)
at hashtables.Main.main(Main.java:70) Java Result: 1
Gibt es eine andere Möglichkeit der Begrenzung der Größe von HashMap
so dass es nicht immer?
InformationsquelleAutor der Frage andandandand | 2011-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manchmal einfacher ist besser.
InformationsquelleAutor der Antwort Mike
Könnte man eine neue Klasse erstellen, wie dies zum begrenzen der Größe einer HashMap:
InformationsquelleAutor der Antwort WhiteFang34
Einfache Lösung ist meist die beste, so verwenden Sie unmodifiable oder Unveränderlich hashmap.
Wenn Sie nicht ändern können Menge von Elementen, dann ist die Größe behoben werden - problem gelöst.
InformationsquelleAutor der Antwort Margus
InformationsquelleAutor der Antwort Kanagavelu Sugumar
Die Methode
put
in die HashMap-Klasse ist die, die verantwortlich für das hinzufügen der Elemente in der HashMap und er tut es durch den Aufruf einer Methode mit dem Namen addEntry welcher code ist wie folgt:Wie Sie sehen können, die in dieser Methode wird die HashMap wird verändert, wenn der Schwellenwert überschritten worden ist, so würde ich versuchen, erweitern Sie die Klasse HashMap und Schreibe meine eigenen Methoden für
put
undaddEntry
um entfernen Sie die Größenänderung. So etwas wie:Würden Sie brauchen, um schreiben Sie Ihre eigenen Methoden, da
put
undaddEntry
nicht überschreiben, und Sie würden auch brauchen, um das gleiche zu tun fürputForNullKey
da wird aufgerufen, input
. Eine Validierung input
ist erforderlich, um sicherzustellen, dass wir nicht versuchen, ein Objekt, wenn die Tabelle voll ist.InformationsquelleAutor der Antwort Maricel