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

Skip to content

Commit 17188f2

Browse files
committed
hashmap 2
1 parent fac09d8 commit 17188f2

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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 int size() {
21+
return size;
22+
}
23+
24+
public V removeKey(K key) {
25+
int bucketIndex = getBucketIndex(key);
26+
MapNode<K, V> head = buckets.get(bucketIndex);
27+
MapNode<K, V> prev = null;
28+
while (head != null) {
29+
if (head.key.equals(key)) {
30+
size--;
31+
if (prev == null) {
32+
buckets.set(bucketIndex, head.next);
33+
} else {
34+
prev.next = head.next;
35+
}
36+
return head.value;
37+
}
38+
prev = head;
39+
head = head.next;
40+
}
41+
return null;
42+
}
43+
44+
public V getValue(K key) {
45+
int bucketIndex = getBucketIndex(key);
46+
MapNode<K, V> head = buckets.get(bucketIndex);
47+
while (head != null) {
48+
if (head.key.equals(key)) {
49+
return head.value;
50+
}
51+
head = head.next;
52+
}
53+
return null;
54+
}
55+
56+
public void insert(K key, V value) {
57+
int bucketIndex = getBucketIndex(key);
58+
MapNode<K, V> head = buckets.get(bucketIndex);
59+
while (head != null) {
60+
if (head.key.equals(key)) {
61+
head.value = value;
62+
return;
63+
}
64+
head = head.next;
65+
}
66+
head = buckets.get(bucketIndex);
67+
MapNode<K, V> newElementNode = new MapNode<K, V>(key , value);
68+
size++;
69+
newElementNode.next = head;
70+
buckets.set(bucketIndex, newElementNode);
71+
}
72+
}
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