8000 hashmap · anmolpant/Coding-Ninjas-Java@fac09d8 · GitHub
[go: up one dir, main page]

Skip to content

Commit fac09d8

Browse files
committed
hashmap
1 parent 059b42b commit fac09d8

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.ArrayList;
2+
3+
public class Map <K, V> {
4+
ArrayList<MapNode<K, V>> buckets;
5+
int size;
6+
int numBuckets;
7+
public Map() {
8+
numBuckets = 5;
9+
buckets = new ArrayList<>();
10+
for (int i = 0; i < numBuckets; i++) {
11+
buckets.add(null);
12+
}
13+
}
14+
15+
private int getBucketIndex(K key) {
16+
int hashCode = key.hashCode();
17+
return hashCode % numBuckets;
18+
}
19+
20+
public void insert(K key, V value) {
21+
int bucketIndex = getBucketIndex(key);
22+
MapNode<K, V> head = buckets.get(bucketIndex);
23+
while (head != null) {
24+
if (head.key.equals(key)) {
25+
head.value = value;
26+
return;
27+
}
28+
head = head.next;
29+
}
30+
head = buckets.get(bucketIndex);
31+
MapNode<K, V> newElementNode = new MapNode<K, V>(key , value);
32+
size++;
33+
newElementNode.next = head;
34+
buckets.set(bucketIndex, newElementNode);
35+
double loadFactor = (1.0*size)/numBuckets;
36+
if (loadFactor > 0.7) {
37+
rehash();
38+
}
39+
}
40+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
public class MapNode<K, V> {
3+
K key;
4+
V value;
5+
MapNode<K, V> next;
6+
7+
public MapNode(K key, V value) {
8+
this.key = key;
9+
this.value = value;
10+
}
11+
}

0 commit comments

Comments
 (0)
0