给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧

给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧

ID:30899462

大小:294.50 KB

页数:18页

时间:2019-01-04

给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧_第1页
给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧_第2页
给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧_第3页
给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧_第4页
给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧_第5页
资源描述:

《给jdk写注释系列之jdk16容器(4)-hashmap源码解析-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、给jdk写注释系列Zjdkl.6容器⑷-HashMap源码解析-Java开发Java经验技巧给jdk写注释系列之jdkl.6容器(4)-HashMap源码解析原乂出处:吞噬天谄本系列:给jdk写注释系列之jdkl.6容器(1)-ArrayList源码解析给jdk写注释系列之jdkl.6容器(2)-LinkedList源码解析给jdk写注释系列之jdkl.6容器(3):Iterator设计模式前而了解了jdk容器屮的两种List,回忆一下怎么从list屮取值(也就是做查询),是通过index索引位置

2、对不对,由于存入list的元素时安装插入顺序存储的,所以index索引也就是插入的次序。Map呢是这样一种容器,它可以存储两个元素键和值,根据键这个关键字可以明确且唯一的查出一•个值,这个过程很像查字典,考虑一下使用什么样的数据结构才能实现这种效果呢?1.自己实现一个Map?先來看一下jdk中map的定义:publicintcrfaccMap{intsize();booleanisEmpty();booleancontainsKey(Objectkey);booleancontainsV

3、alue(Objectvalue);Vget(Objectkey);Vput(Kkey,Vvalue);Vremove(Objectkey);voidputAll(Mapm);voidclear();SctkcySct();Collectionvalues();Set>entrySet();interfaceEntry{VgetValueO;VsctValue(Vvalue);booleanequals

4、(Objecto);inthashCode();booleanequals(Objecto);inthashCode();}可以看到Map并没有实现Collection接口,也没有实现List接口,因为它可以保存两个属性key-value,和List容器一样还是包含增删改查等棊木操作,同时可以看到Map中还定义了一个用來表示键值K-V的接口Entryo在了解了map的概念和定义后,首先我们自己先来简单写一个Map的实现,看看会遇到什么样的问题。publicclassMyMap{privateEnt

5、ry[]data二newEntry[100];privateintsize;publicObjectput(Objectkey,Objectvalue){//检查key是否存在,存在则覆盖for(inti二0;i

6、size++;rcturnnull;}publicObjectget(Objectkey){for(inti二0;i

7、ue二value;}上面我们简单实现了一下map的put、get、size等方法,从代码可以看到底层是使用数纟R来存储数据的。测试一下上面的方法:publicclassTest{publicstaticvoidmain(String[]args){MyMeipmap=newMyMeipO;map.put("tstcT,,zangelababy,z);map.put(〃张三",〃李四“);map.put(〃tstd〃,〃高圆圆〃);System・out・printin(map・sizcO);Syst

8、em・out・printin(map・get(〃tstd〃));System,out.printin(map.get("张三〃));}看下结果:高圆圆李四结果好像是没有问题的对不对。但是这么简单嘛?我们来看一下上面的代码存在一些什么样的问题。观察代码可以看到,get方法中,通过key获1Rvalue的方式是通过遍历数组实现,这样显然是非常低效的,同样在put方法中由于耍检査key是否已经存在也是通过遍历数组实现,想一下有没有更好的办法呢?能不能像数组那样肓接通过下标就可以取得对应的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。