java中实现一个简单HashMap(就是自己写一个简单的,不要太复杂);
展开全部
Hashmap这个结构,是从一个key到一个value的映射的集合,其中的hash是指用hash数组(也就是散列表)来存放value集合。
实现思路上,通过key的hashcode来确定value存储的位置,遇到冲突的位置就通过某个规则找下一个位置。
实现的简述:
1. value数组,Object[] values;
2. key,Object key,可能要考虑hashcode方法和equals方法的重写;
3. 冲突解决规则,下一个位置=(该位置*2+123)% values.size();
需要注意的是,values存的元素不是一个value而已,还要保留用来确定位置的hashcode值,因为在冲突的时候,Hashmap的get(key)方法需要比较hashcode来确定是不是key对应的value。
更好的办法,是values存一个链表,冲突的元素都放在链表里,在get(key)的时候遍历这个链表来获得value。再细节的东西,自己想想吧,这个写起来也不算复杂,可以动手试试。
实现思路上,通过key的hashcode来确定value存储的位置,遇到冲突的位置就通过某个规则找下一个位置。
实现的简述:
1. value数组,Object[] values;
2. key,Object key,可能要考虑hashcode方法和equals方法的重写;
3. 冲突解决规则,下一个位置=(该位置*2+123)% values.size();
需要注意的是,values存的元素不是一个value而已,还要保留用来确定位置的hashcode值,因为在冲突的时候,Hashmap的get(key)方法需要比较hashcode来确定是不是key对应的value。
更好的办法,是values存一个链表,冲突的元素都放在链表里,在get(key)的时候遍历这个链表来获得value。再细节的东西,自己想想吧,这个写起来也不算复杂,可以动手试试。
追问
有没有代码 急需 想看看 只是理论的我一些 但代码怎么编写就不知道了 谢谢
追答
试着写写吧,遇到问题了再问吧。看现成的,会忽视掉很多细节的问题。别怕复杂,什么复杂的问题都是一个个小问题组成的,慢慢来。我也是真没空敲这些了。实在想看,百度里搜搜吧,也许会有,或者像某楼说的,看看jdk源码的实现。
展开全部
我觉得JDK里面那个HashMap已经很简单了。
你看着那么多行代码,其实很多都是注释。
顶多把table扩容的功能去掉。
你看着那么多行代码,其实很多都是注释。
顶多把table扩容的功能去掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HashMap<String,String> map=new HashMap<String,String>();//定义
map.put("key","我要最佳答案");//给map插值
String str=map.get("key");//从map中取值
Ssytem.out.println(str)
map.put("key","我要最佳答案");//给map插值
String str=map.get("key");//从map中取值
Ssytem.out.println(str)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询