Java Map 集合类简介
日期:2007年11月19日 作者: 查看:[大字体 中字体 小字体]-
Java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。
了解 Map 接口和方法
Java 核心类中有很多预定义的 Map 类。 在介绍具体实现之前,我们先介绍一下 Map 接口本身,以便了解所有实现的共同点。 Map 接口定义了四种类型的方法,每个 Map 都包含这些方法。 下面,我们从两个普通的方法(表 1)开始对这些方法加以介绍。
表 1: 覆盖的方法。 我们将这 Object 的这两个方法覆盖,以正确比较 Map 对象的等价性。 equals(Object o) 比较指定对象与此 Map 的等价性
hashCode() 返回此 Map 的哈希码
Map 构建
Map 定义了几个用于插入和删除元素的变换方法(表 2)。
表 2: Map 更新方法: 可以更改 Map 内容。 clear() 从 Map 中删除所有映射
remove(Object key) 从 Map 中删除键和关联的值
put(Object key, Object value) 将指定值与指定键相关联
clear() 从 Map 中删除所有映射
putAll(Map t) 将指定 Map 中的所有映射复制到此 map
尽管您可能注意到,纵然假设忽略构建一个需要传递给 putAll() 的 Map 的开销,使用 putAll() 通常也并不比使用大量的 put() 调用更有效率,但 putAll() 的存在一点也不稀奇。 这是因为,putAll() 除了迭代 put() 所执行的将每个键值对添加到 Map 的算法以外,还需要迭代所传递的 Map 的元素。 但应注意,putAll() 在添加所有元素之前可以正确调整 Map 的大小,因此如果您未亲自调整 Map 的大小(我们将对此进行简单介绍),则 putAll() 可能比预期的更有效。
查看 Map
迭代 Map 中的元素不存在直接了当的方法。 如果要查询某个 Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该 Map 的“视图”。 有三种可能的视图(参见表 3)
所有键值对 — 参见 entrySet()
所有键 — 参见 keySet()
所有值 — 参见 values()
前两个视图均返回 Set 对象,第三个视图返回 Collection 对象。 就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,您必须获得一个 Iterator 对象。 因此,要迭代 Map 的元素,必须进行比较烦琐的编码
Iterator keyValuePairs = aMap.entrySet().iterator();
Iterator keys = aMap.keySet().iterator();
Iterator values = aMap.values().iterator();
值得注意的是,这些对象(Set、Collection 和 Iterator)实际上是基础 Map 的视图,而不是包含所有元素的副本。 这使它们的使用效率很高。 另一方面,Collection 或 Set 对象的 toArray() 方法却创建包含 Map 所有元素的数组对象,因此除了确实需要使用数组中元素的情形外,其效率并不高。 - [1] [2] [3] 下一页
-
- Java Map 集合类简介 相关文章:
- ·Servlet简介
- ·极品五笔简介
- ·密码破解简介
- ·IE7浏览器下载免验证IE7简体中文版下载
- ·巧妙破解Win XP的登录密码简法
- ·DIY装机全过程图解简述
- ·五笔一级简码(五笔字根)
- ·用flash制作简单拼图游戏
- ·最简单的FLASH动画LOADING制作
- ·PS初学者实例教程——简单水中倒影制作
- Java Map 集合类简介 相关软件
- ·Microsoft Office 2003 Suite SP2 简体中文完整版
- ·抢滩登陆战 2002 简体中文版
- ·流星蝴蝶剑 威震八方 简体中文版
- ·Adobe Reader V8.1.0 简体中文版
- ·Kaspersky(卡巴斯基) KIS 安全套装 V6.0.2.621 MP2 简体中文正式免激活版
- ·VR特警2 简体中文版
- ·英雄无敌3:死亡阴影 Heroes of Might Magic 3:The Shadow of Death 简体中文版
- ·CS七龙珠-地面特战队(Earth's Special Forces) 简本中文版
- ·重返狼穴III:越南视线 Line of Sight: Vietnam 简体中文版
- ·Cool Edit Pro V2.0 简体中文版
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:Java String 的 equals() 方法可能的优化
精品推荐
热点TOP10
- ·Servlet简介
- ·Java编写的计算器程序及源代码(1)
- ·Java学生成绩管理系统源代码
- ·servlet和JSP过滤器Filter
- ·Struts+Spring+Hibernate实现上传下载
- ·Web2.0时代的核心应用:Ajax简介
- ·用Java实现音频播放
- ·Java Map 集合类简介
- ·在桌面应用中使用JAVA DB
- ·使用poi操作Excel的几点注意事项
- ·你能过关吗?J2EE面试题集锦(附答案)
- ·候捷谈Java反射机制
- ·J2ME游戏开发实例讲解
- ·java网络五子棋的源代码
- ·用java实现print screen,读取位图文件,将位图文件转化位jpeg格式并保存成文件输出!
- ·Java基础:三步学会Java Socket编程
- ·SOAP协议初级指南
- ·开源技术——体验Struts
- ·J2SE简介
- ·JavaDoc用法
特别推荐
- ·你能过关吗?J2EE面试题集锦(附答案)
- ·面向过程与面向对象的区别
- ·Tapestry入门
- ·候捷谈Java反射机制
- ·标准的web.xml
- ·Java异常处理的特殊情况
- ·SOAP协议初级指南
- ·Why Java can be used for games?
- ·用Java Socket制作广播信使程序
- ·J2ME游戏开发实例讲解
- ·用java实现print screen,读取位图文件,将位图文件转化位jpeg格式并保存成文件输出!
- ·[SNAP]实例讲解移动QQ在线平台
- ·0. Preface: Core Technologies
- ·一个简单实用的数据库操作框架
- ·开源技术——体验Struts
- ·Java资料:Swing中的事件处理详细资料
- ·Tomcat性能调整
- ·Java基础:三步学会Java Socket编程
- ·一种通用的输入校验方法和气球泡提示的实现(键盘用户界面模块)
- ·JBoss 4.0 简化了中间件的开发
