4. Map接口
Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。
4.1. Map.Entry接口
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。
通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。
4.2. SortedMap接口
“集合框架”提供了个特殊的Map接口:SortedMap,它用来保持键的有序顺序。
SortedMap接口为映像的视图(子集),包括两个端点提供了访问方法。除了排序是作用于映射的键以外,处理SortedMap和处理SortedSet一样。
添加到SortedMap实现类的元素必须实现Comparable接口,否则您必须给它的构造函数提供一个Comparator接口的实现。TreeMap类是它的唯一一份实现。
4.3. AbstractMap抽象类
和其它抽象集合实现相似,AbstractMap 类覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的哈希码。
4.4. HashMap类和TreeMap类
HashMap通过hashcode对其内容进行快速查找。
Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 。
“集合框架”提供两种常规的Map实现:HashMap和TreeMap (TreeMap实现SortedMap接口)。在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和equals()的实现。
4.5. LinkedHashMap类
LinkedHashMap扩展HashMap,以插入顺序将关键字/值对添加进链接哈希映像中。象LinkedHashSet一样,LinkedHashMap内部也采用双重链接式列表。
4.6. WeakHashMap类
WeakHashMap是Map的一个特殊实现,它使用WeakReference(弱引用)来存放哈希表关键字。使用这种方式时,当映射的键在 WeakHashMap 的外部不再被引用时,垃圾收集器会将它回收,但它将把到达该对象的弱引用纳入一个队列。WeakHashMap的运行将定期检查该队列,以便找出新到达的弱应用。当一个弱引用到达该队列时,就表示关键字不再被任何人使用,并且它已经被收集起来。
分享到:
相关推荐
很值得一看的书籍,很多人都推荐,适合有一定java基础的人学习提高
Think in java 读书笔记 java教程
王者归来之--Java编程思想读书笔记 Think in java4th
学习 Think In Java 之后的总结,一些学习笔记,提供学习
Python学习笔记--皮大庆,非常适合零基础入门。对应英文版本《How to think like a computer scientist》
java 很好的java学习文档,是学习java的入门基础,谢谢你的下载
think in java 第四版 源码以及作业 eclipse版本 包含jar包 可以直接导入eclipse
第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 ...1.7.1 集合与继承器 ...1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++?
Think in java 源码构建编译
Think-In-Java-Code Thinking In Java 书中源码以及课后练习代码(从第7章开始随着看书的进度一步步更新) 第七章 复用类 7.1 组合语法 7.2 继承语法 7.2.1 初始化基类 7.3 代理 7.4 结合使用组合和继承 7.4.1 确保...
think in java 源码整理,应该算是比较全面的,有需要的朋友可以下下来看下
经典的think in java4,所有源码,帮你早日攻克java学习的堡垒!!!
Think in java 的代码源码,里面很详细的习题详解
JAVA思想中文版,CHM格式.
java3think in java笔记(111)---打印 (2008-04-24 16:58:28) 标签:杂谈 1 默认情况下,print()方法会调用paint()来完成自己的工作。 2 选择一种字体和大小,决定字符串在页面上存在的位置,并且使用Graphics...
这是一本充满智慧的书,与简单的参考书有着截然不同的风格。它现在已成了我进行Java 创作一份主要参考。你的目录做得相当不错,让人一目了然,很快就能找到自己需要的东西。
java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一
Think4V-UtubeDown-setup-3.2.6.exe
Think Data Structures in Java 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
本教程由yyc,spirit整理 ---------------------