package demo;
public class CustomMap<K, V> {
private CustomMapEntry[] entryList = new CustomMapEntry[8];
class CustomMapEntry<K, V> {
private K k;
private V v;
private CustomMapEntry next;
public CustomMapEntry(K k, V v) {
this.k = k;
this.v = v;
}
}
public void put(K k, V v) {
int index = k.hashCode() % entryList.length;
CustomMapEntry newValue = new CustomMapEntry(k, v);
CustomMapEntry oldValue = entryList[index];
if(entryList[index] == null){
entryList[index] = newValue;
}else {
newValue.next = oldValue;
entryList[index] = newValue;
}
System.out.println("k:" + k + ";hashcode:" + k.hashCode());
}
public V get(K k) {
int index = k.hashCode() % entryList.length;
CustomMapEntry entry = entryList[index];
while (entry != null){
if(entry.k.equals(k)){
return (V) entry.v;
}else {
entry = entry.next;
}
}
return null;
}
public static void main(String[] args) {
CustomMap customMap = new CustomMap();
customMap.put("a", "demo");
customMap.put(97, "demo97");
System.out.println((String) customMap.get("a"));
}
}
简单手写数组+链表hashmap源码
最新推荐文章于 2023-12-10 16:14:21 发布