欢迎来到天天文库
浏览记录
ID:9504705
大小:80.50 KB
页数:11页
时间:2018-05-01
《java编程思想读书笔记(9.2章)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java编程思想读书笔记(9.2章) 4.自己实现一个简单的HashMap及其原理 4.1在put()方法中: 1)首先通过key得出要插入的key-valuepair的hashcode,并这个hashcode作为索引在数组bucket中找出key所对应的元素。 2)把要插入的key-valuepair封装成实现了Map.Entry接口的类的一个对象。 3)在操作1)所找出的数组元素(也是一个LinkedList)中查看是否有与要插入的key-valuepair的key相同的元素,如果有,则对之进行更新;如果无,则把要插入的key-valuepair数组元素中。 4.2在ge
2、t()方法中 1)首先通过key得出要查找的key-valuepair的hashcode,并这个hashcode作为索引在数组bucket中找出key所对应的元素。 2)把要查找的key-valuepair的key封装成实现了Map.Entry接口的类的一个对象。 3)在操作1)所找出的数组元素(也是一个LinkedList)中查看是否有与要插入的key-valuepair的key相同的元素,如果有,则返回key所对应的value;如果无,则返回一个null。 4.3一个实例 importjava.util.*; /** *MPair类实现了Map.Entry */ cl
3、assMPair implementsMap.Entry,parable{ Objectkey,value; MPair(Objectk,Objectv){ key=k; value=v; } publicObjectgetKey(){returnkey;} publicObjectgetValue(){returnvalue;} publicObjectsetValue(Objectv){ Objectresult=value; value=v; returnresult; } /** *当比较两个MPair对象时,比较的是它们的key值 */ pub
4、licbooleanequals(Objecto){ returnkey.equals(((MPair)o).key); } publicintpareTo(Objectrv){ return(((parable)key).pareTo(((MPair)rv).key)); } } classSimpleHashMapextendsAbstractMap{ privatefinalstaticintSZ=997; privateLinkedList[]bucket=neap.Entry的实现类后插入到array中 */ publicObjectput(Objectk
5、ey,Objectvalue){ Objectresult=null; //通过key得到要插入的key-valuepair的hashcode intindex=key.hashCode()%SZ; if(index<0)index=-index; if(bucket[index]==null) bucket[index]=nePair MPairpair=nePair(key,value); ListIteratorit=pairs.listIterator(); booleanfound=false; //检查是否有与要插入的key相同的key存在,如果有,
6、就对之进行更新 Pair)iPair).getValue(); it.set(pair); found=true; break; } } //如果无,则把新的key-valuepair插入 if(!found) bucket[index].add(pair); returnresult; } publicObjectget(Objectkey){ intindex=key.hashCode()%SZ; if(index<0)index=-index; if(bucket[index]==null)returnnull; LinkedListpairs
7、=bucket[index]; ListIteratorit=pairs.listIterator(); M1234下一页[教育资源网]edu..,。Pairmatch=neatch)) return((MPair)iPair).getValue(); } returnnull; } publicSetentrySet(){ Setentries=neain(String[]args){ SimpleHashMap
此文档下载收益归作者所有