利用Array和LinkedList实现hashMap
来源:互联网 发布:js array转json对象 编辑:程序博客网 时间:2024/06/07 12:32
import java.util.LinkedList;public class MyHashMap { // hashMap 的底层结构就是 数组和链表 LinkedList[] arr = new LinkedList[10]; int size; public void put(Object key, Object value) { MyEntry entry = new MyEntry(key, value); int hash = key.hashCode(); hash = hash < 0 ? -hash : hash;// 用来计算数组下标,保证为正数 int a = hash % arr.length;//确保下标小于10 // 没有出现hash冲突,直接保存 if (arr[a] == null) { LinkedList<MyEntry> list = new LinkedList<MyEntry>(); list.add(entry); arr[a]=list; size++; } else { LinkedList<MyEntry> list = arr[a]; // 出现hash冲突,则遍历桶(这里的链表称为桶) for (MyEntry e : list) { // 如果出现了相同的key,则替换 if (e.key.equals(key)) { e.value = value; break; } else { list.add(entry); size++; } } } } public Object get(Object key){ //根据key的hash,计算出数组的下标 int hash = key.hashCode(); hash = hash < 0 ? -hash : hash; int a = hash % arr.length; LinkedList<MyEntry> list = arr[a]; if(list != null){ if(list.size()==1){ return list.get(0).value; }else{ for(MyEntry entry:list){ if(entry.key.equals(key)){ return entry.value; } } } } return null; } public static void main(String[] args) { MyHashMap map = new MyHashMap(); map.put("aaa", "dingding"); map.put("bbb", "chaochao"); System.out.println(map.get("aaa")); System.out.println(map.get("bbb")); map.put("aaa", "duanduan"); System.out.println(map.get("aaa")); }}[http://img.blog.csdn.net/20150516131644365](http://img.blog.csdn.net/20150516131644365)
0 0
- 利用Array和LinkedList实现hashMap
- Linkedlist和Array实现Stack
- Array / ArrayList / Vector / LinkedList / Hashmap
- LinkedList 和 Array
- Array / ArrayList / Vector / LinkedList / Hashmap区别
- LinkedList+HashMap实现LRU算法
- java模拟hashMap实现(linkedList方式)
- ArrayList LinkedList与HashMap 实现原理
- ArrayList、LinkedList、HashMap的底层实现
- Java中HashMap,Hashtable和LinkedList
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- ArrayList、LinkedList和HashSet、TreeSet以及HashMap、TreeMap是如何实现存储的?
- ArrayList和LinkedList实现
- HashMap实现原理,利用数组和链表存储元素
- Vector和ArrayList Hashtable和HashMap ArrayList和LinkedList
- java 利用 LinkedList类实现 数据结构 栈.......
- 利用双向链表实现LinkedList
- dijkstra算法
- Write file 之 excel jxl.jar
- VMware虚拟机下CentOS无法上网解决方法
- 主主复制-主主复制时的主键冲突解决
- 单例设计模式
- 利用Array和LinkedList实现hashMap
- java方法的重载(overloading)和覆盖(override)
- ThinkPad E450(c)添加或者更换内存条的一些问题
- 黑马程序员---网络编程(二)
- [leetcode][Array] Rotate Image
- 2015年NEUACM省赛练习赛第二场 赛后小结
- 色彩模型
- linux搭建SVNSERVER
- 国防科学技术大学第十八届银河之光文化节ACM程序设计竞赛初赛第三场 E题补充题解