Map 的功能方法

ArrayList 允许你使用数字从对象序列中选择元素,因此它在数字与对象之间建立了关联。
如果要使用其他条件来从序列中选择对象,应该怎么做呢?“栈”是一个例子。它的选择
条件是“最后一个加入栈中的东西”。由“从序列中进行选择”这种思想发展出了 map 这
种强大的工具,也称作字典,或关联数组(曾在前面的章节中见过的
AssociativeArray.java 就是一个简单的例子)。从概念上讲,它看起来就像是 ArrayList,
只是不再用数字下标查找对象,而是以另一个对象来进行查找。这是一种至关重要的编程
技术。
Map 接口即是此概念在 Java 中的体现。方法 put(Object key, Object value)添加一个
“值”(value)(想要的东西)和与“值”相关联的“键”(key)(使用它来查找)。
方法 get(Object key)返回与给定“键”相关联的“值”。可以用 containsKey()和
containsValue()测试 Map 中是否包含某个“键”或“值”。


标准的 Java 类库中包含了几种不同的 Map:HashMap,TreeMap,LinkedHashMap,
WeakHashMap,IdentityHashMap。它们都有同样的基本接口 Map,但是行为、效率、
排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。


执行效率是Map的一个大问题。看看get()要做哪些事,就会明白为什么在ArrayList中搜
索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,
称作“散列码”(hash code),来取代对“键”的缓慢搜索。“散列码”是“相对唯一”
用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。所有Java对象都
能产生散列码,因为hashCode()是定义在基类Object中的方法。HashMap就是使用对象

的hashCode()进行快速查询的。此方法能够显著提高性能。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值