107-109_容器_自己实现HashMap_Map底层实现_哈希算法实现_使用数组和链表
2017-07-31 13:32
357 查看
package com.zhushen.map; import java.util.LinkedList; /** * 自定义Map的升级版 * 1.提高查询效率 * 2.HashMap的底层实现是数组+链表(链表数组) * @author zhushen * */ public class MyHashMap { class Entry { Object key; Object value; public Entry(Object key, Object value) { super(); this.key = key; this.value = value; } } @SuppressWarnings("unchecked") LinkedList<Object> arr[] = new LinkedList[999];//HashMap的底层结构:数组+链表 int size; public void put(Object key,Object value){ Entry e=new Entry(key, value); int hash=key.hashCode(); hash=hash<0?-hash:hash; int temp=key.hashCode()%999; if(arr[temp]==null){ LinkedList<Object> list=new LinkedList<Object>(); arr[temp]=list; list.add(e); }else{ for(int i=0;i<arr[temp].size();i++){ Entry e2=(Entry) arr[temp].get(i); if(e2.key.equals(key)){ e2.value=value; //键值重复直接覆盖 } } arr[temp].add(e); } } public Object get(Object key){ //return arr[key.hashCode()%999]; int temp=key.hashCode()%999; if(arr[temp]!=null){ for(int i=0;i<arr[temp].size();i++){ Entry e=(Entry) arr[temp].get(i); if(e.key.equals(key)){ return e.value; } } } return null; } public static void main(String[] args) { MyHashMap m = new MyHashMap(); m.put("高琪", new Wife("杨幂")); m.put("高琪", new Wife("李四")); Wife w = (Wife) m.get("高琪"); System.out.println(w.name); } }
相关文章推荐
- 根据数组+链表的原理,自己实现一个简易版的HashMap
- 创建自己的Stack底层使用数组来实现
- Java集合,HashMap底层实现和原理(1.7数组+链表与1.8+的数组+链表+红黑树)
- 自行实现Map底层结构(数组+链表) --Java版
- 使用数组和底层容器实现栈
- 每日一省之—使用线性探测法(仅利用数组作为底层数据结构)实现HashMap
- stl容器区别: vector list deque set map-底层实现
- (11) java集合 ---- LinkedHashMap和HashMap等Map的比较使用以及 LinkedHashMap的实现原理
- 自己实现 STL Stack(用数组和链表)
- stl容器区别: vector list deque set map-底层实现
- java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
- stl容器的区别:vector list deque set map-底层实现
- 数组第二十四课,模拟ArrayList容器的底层实现,JDK源码分析
- STL 容器区别:vector、list、deque、set、map的底层实现
- 容器第四课,JDK源代码分析,自己实现LinkedList,双向链表的概念_节点定义
- 链表实现的堆栈程序(仅供自己学习使用)
- 自己实现 STL Queue(用数组和链表)
- java使用数组和链表实现队列示例
- 链表实现的队列程序(仅供自己学习使用)
- stl容器区别: vector list deque set map-底层实现