Ποιος είναι ο ελάχιστος αριθμός στοιχείων που απαιτούνται για την αρχικοποίηση ενός HashMap χωρίς αυτόματη επέκταση;
sobes.tech AI
Απάντηση από AI
Το HashMap στη Java έχει αρχική χωρητικότητα (capacity) και παράγοντα φόρτωσης (load factor), που είναι προεπιλεγμένα 16 και 0,75 αντίστοιχα. Η αυτόματη επέκταση συμβαίνει όταν ο αριθμός των στοιχείων υπερβαίνει το capacity πολλαπλασιασμένο με το load factor.
Για να αποφύγετε την αυτόματη επέκταση κατά την αρχικοποίηση, πρέπει να ορίσετε μια χωρητικότητα που να μπορεί να φιλοξενήσει τον απαιτούμενο αριθμό στοιχείων χωρίς να υπερβεί το όριο.
Ο ελάχιστος αριθμός στοιχείων για την αρχικοποίηση ενός HashMap χωρίς επέκταση είναι ο μέγιστος δυνατός αριθμός που δεν υπερβαίνει το threshold = capacity * load factor.
Για παράδειγμα, με capacity=16 και load factor=0,75, το threshold είναι 12. Αυτό σημαίνει ότι μέχρι την προσθήκη 12 στοιχείων, δεν θα γίνει επέκταση.
Αν θέλετε να αρχικοποιήσετε ένα HashMap με συγκεκριμένο αριθμό στοιχείων n χωρίς επέκταση, ορίστε initialCapacity >= n / loadFactor.
Παράδειγμα:
int expectedElements = 10;
float loadFactor = 0.75f;
int initialCapacity = (int) Math.ceil(expectedElements / loadFactor);
HashMap<String, String> map = new HashMap<>(initialCapacity, loadFactor);