HashMap简单实现
2017-09-28 00:00
239 查看
摘要: HashMap简单实现
此实现仅仅是为了实现笔试题的东西,不必深究
1、链表
package com.java.demo.map; /** * @ClassName: Entry * @Description: * @author weiyb * @date 2017年9月28日 下午4:54:44 * @param <K> * @param <V> */ public class Entry<K, V> { private K k; private V v; private Entry<K, V> next; public Entry() { super(); } public Entry(K k, V v) { super(); this.k = k; this.v = v; } public K getK() { return k; } public void setK(K k) { this.k = k; } public V getV() { return v; } public void setV(V v) { this.v = v; } public Entry<K, V> getNext() { return next; } public void setNext(Entry<K, V> next) { this.next = next; } }
2、map类
package com.java.demo.map; /** * @ClassName: MapModel * @Description: * @author weiyb * @date 2017年9月28日 下午4:54:49 * @param <K> * @param <V> */ public class MapModel<K, V> { /** * 数组长度 * @author weiyb */ private final int length = 100; private Entry<K, V>[] entrys = new Entry[length]; /** * 录入 * @param k * @param v * @author weiyb */ public void put(K k, V v) { int index = hash(k.hashCode()); Entry<K, V> tmp = entrys[index]; if (tmp != null) { while (tmp.getNext() != null && !k.equals(tmp.getNext().getK())) { tmp = tmp.getNext(); } tmp.setNext(new Entry<K, V>(k, v)); } else { entrys[index] = new Entry<K, V>(k, v); } } /** * 获取 * @param k * @return * @author weiyb */ public V get(K k) { Entry<K, V> result = new Entry<K, V>(); int index = hash(k.hashCode()); Entry<K, V> tmp = entrys[index]; if (!k.equals(tmp.getK())) { while (tmp.getNext() != null && !k.equals(tmp.getNext().getK())) { tmp = tmp.getNext(); } if (tmp.getNext() != null) { result = tmp.getNext(); } } else { result = tmp; } return result.getV(); } private int hash(int h) { return h % length; } }
3、测试
package com.java.demo.map; import org.junit.Test; /** * @ClassName: MapTest * @Description: * @author weiyb * @date 2017年9月27日 下午5:39:44 */ public class MapTest { @Test public void mapTest() { MapModel<String, Object> map = new MapModel<>(); for (int i = 0; i < 500; i++) { map.put(i + "", 1000 + i); } for (int i = 0; i < 500; i++) { System.out.println(map.get(i + "")); } } }
相关文章推荐
- 哈希表原理及hashmap简单实现
- 简单的hashmap的实现
- 一个简单的HashMap C语言实现
- java自己实现的简单的hashMap
- 实现一个简单的散列表(HashMap)
- java 散列与散列码探讨 ,简单HashMap实现散列映射表执行各种操作示列
- 一个简单的HashMap C语言实现
- hashmap 的简单实现
- java——HashMap的实现原理,自己实现简单的HashMap
- HashMap实现原理分析及简单实现一个HashMap
- java 散列与散列码探讨 ,简单HashMap实现散列映射表运行各种操作示列
- HASHMAP缓存简单java实现
- hashMap的实现原理-自定义简单的hashMap
- HashMap的简单实现
- HashMap的实现原理简单分析
- java HashMap的简单实现
- HashMap的简单实现
- JS中实现简单实用的HashMap
- 一个简单的HashMap C语言实现
- 利用自定义泛型,自己简单实现HashMap