论JAVA集合的实现细节,Map和List的联系
2015-10-14 20:52
330 查看
表面上我们感觉这俩没什么联系,实际上是有一些联系的。
Map是一个关联数组,它包含两组值,key-value.Key组成了一个Set集合,另外一个是values的集合。因为Map的values完全可以重复。
但是实际上并未返回一个List集合:
HashMap和TreeMap这俩类的values的方法实现完全相同,当第一次调用values方法的时候他们会创建一个values对象。
不管是HashMap还是TreeMap看起来返回的是有value组成的Collection的集合。这个集合应该是一个List集合,因为value是可以重复的。但是实际上这个values方法更加巧妙。方法返回的是一个不存储元素的Collection的集合。当程序遍历集合的湿乎乎实际上遍历Map对象的value。
HashMap和TreeMap并未把value组合成一个List,这样就减少了系统内存开销。
Map和List底层实现上并没有太大的相似之处,只是在用法上存在一些相似之处:即可以说List是所有Key都是int的Map,也可以说Map是相当于索引是任意类型的List.
Map是一个关联数组,它包含两组值,key-value.Key组成了一个Set集合,另外一个是values的集合。因为Map的values完全可以重复。
但是实际上并未返回一个List集合:
HashMap和TreeMap这俩类的values的方法实现完全相同,当第一次调用values方法的时候他们会创建一个values对象。
不管是HashMap还是TreeMap看起来返回的是有value组成的Collection的集合。这个集合应该是一个List集合,因为value是可以重复的。但是实际上这个values方法更加巧妙。方法返回的是一个不存储元素的Collection的集合。当程序遍历集合的湿乎乎实际上遍历Map对象的value。
HashMap和TreeMap并未把value组合成一个List,这样就减少了系统内存开销。
Map和List底层实现上并没有太大的相似之处,只是在用法上存在一些相似之处:即可以说List是所有Key都是int的Map,也可以说Map是相当于索引是任意类型的List.
相关文章推荐
- 我的Java学习之路2——继承中的构造方法
- java里面的文件上传与下载
- JAVA中的finalize()方法
- jdk环境变量配置以及作用
- java字符流
- android+eclipse环境搭建
- 从头认识java-1.2 对象-服务提供者
- 从头认识java-1.2 对象-服务提供者
- 添加Aop声明式事务处理java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isUserLevelMethod
- javaFX 实现计算器[面向对象-2小时完成]
- 用java将字符串中的数字输出
- java Web服务实现方案(REST+SOAP+XML-RPC)简述及比较
- 浅析Struts1和Struts2的Action线程安全问题
- 排序算法之快速排序(java实现)
- java异常
- Java并发编程:Thread类的使用
- 我的Java学习之路1——Eclipse调试Bug的方法
- 《深入理解java虚拟机》之字节码执行引擎
- Java中的回车换行符/n /r /t
- 从D盘下HelloWorld.java文件中读取全部信息并打印到控制台