Как установить коэффициент загрузки для hashmap ?
Ниже приведена простая реализация Hashmap , которую я попробовал, так как сейчас я использую массив фиксированного размера.
Как установить коэффициент нагрузки и увеличить емкость массива после достижения коэффициента нагрузки ?
Что еще более важно , как мы узнаем , прошел ли массив коэффициент загрузки, я имею в виду, что ключи будут случайными числами от 0 до n, так как же мы узнаем, что в массиве больше не осталось ведер ?
public class demo { public static void main(String[] args) { Hashmap map = new Hashmap(60); map.put(4, "Deepeshh"); map.put(4, "Deepesh"); map.put(5, "Kiran"); map.put(6, "Aryan"); map.put(40, "ABC"); map.get(4); map.get(40); } }
public class Hashmap { Node[] container_array; //Current size is fixed. we can use Load factor to // decide when to increase the size of the array. Hashmap(int size) { this.container_array = new Node[size]; } static class Node { int key; int hash; String value; Node next; Node(int key, String value, int hash) { this.key = key; this.hash = hash; this.value = value; this.next = null; } } void put(int key, String value) { int hash = Integer.hashCode(key); int index = hash % container_array.length - 1; if (container_array[index] == null) { Node newNode = new Node(key, value, hash); container_array[index] = newNode; } else if (container_array[index] != null) { Node temp = container_array[index]; //if the user is trying to update or // change the value at a existing key. if (temp.key == key && temp.hash == hash) { temp.value = value; } else { //if there is hash collision & the index is already having a Node. while (temp.next != null) { temp = temp.next; } temp.next = new Node(key, value, hash); } } } void get(int key) { int hash = Integer.hashCode(key); int index = hash % container_array.length - 1; if (container_array[index] == null) { System.out.println("Nothing exists for this key !"); } else if (container_array[index] != null) { Node temp = container_array[index]; while (temp != null) { if (temp.key == key && temp.hash == hash) { System.out.println(temp.value); return; } temp = temp.next; } } } }
Что я уже пробовал:
Пробовал Гугл и другие интернет-ресурсы.