Map(映射)是一种把键对象和值对象进行映射的集合,它的每一个元素都包含一对键对象和值对象。向Map 集合加入元素时,必须提供一对键对象和值对象。从Map 集合中检索元素时,只要给出键对象,就会返回对应的值对象。
Map 接口不是Collection 接口的继承。Map 接口用于维护键/值对(key/value)。该接口描述了从不重复的键到值的映射,Map 接口及其实现类介绍见表6.5。
表6.5 Map 集合
Map 接口常用方法见表6.6。
表6.6 Map 集合的常用方法
1.Hash 表(www.daowen.com)
Hash 表是一种数据结构,用来查找对象。Hash 表为每个对象计算出一个整数,称为Hash Code(哈希码)。Hash 表是个链接式列表的阵列。每个列表称为一个buckets(哈希表元)。对象位置的计算index = HashCode % buckets(HashCode 为对象哈希码,buckets 为哈希表元总数)。
当添加元素时,有时会遇到已经填充了元素的哈希表元,这种情况称为Hash Collisions(哈希冲突)。这时,就必须判断该元素是否已经存在于该哈希表中。
如果哈希码是合理地随机分布的,并且哈希表元的数量足够大,那么哈希冲突的数量就会减少。同时,也可以通过设定一个初始的哈希表元数量来更好地控制哈希表的运行。初始哈希表元的数量为buckets = size * 150% + 1(size 为预期元素的数量)。
如果哈希表中的元素放得太满,就必须进行rehashing(再哈希)。再哈希使哈希表元数增倍,并将原有的对象重新导入新的哈希表元中,而原始的哈希表元被删除。load factor(加载因子)决定何时要对哈希表进行再哈希。在Java 编程语言中,加载因子默认值为0.75,默认哈希表元为101。
2.Comparable 接口和Comparator 接口
在“集合框架”中有两种比较接口:Comparable 接口和Comparator 接口。像String和Integer 等Java 内建类实现Comparable 接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable 接口的类、或者自定义的类,可以通过Comparator 接口来定义自己的比较方式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。