您所在的位置:读书频道 > 设计开发 > Java系列 > 17.8.1 性能

17.8.1 性能

2007-06-28 11:49 Bruce Eckel 著 陈昊鹏 译 机械工业出版社 字号:T | T
一键收藏,随时查看,分享好友!

《Java编程思想 第4版》共22章,主要包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。本文是性能介绍。

AD:

17.8.1   性能
性能是映射表中的一个重要问题,当在get()中使用线性搜索时,执行速度会相当地慢,而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称作散列码,来取代对键的缓慢搜索。散列码是“相对唯一”的、用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。hashCode()是根类Object中的方法,因此所有Java对象都能产生散列码。HashMap就是使用对象的hashCode()进行快速查询的,此方法能够显著提高性能。
下面是基本的Map实现。在HashMap上打星号表示如果没有其他的限制,它就应该成为你的默认选择,因为它对速度进行了优化。其他实现强调了其他的特性,因此都不如HashMap快。

散列是映射中存储元素时最常用的方式。稍后你将会了解散列机制是如何工作的。
对Map中使用的键的要求与对Set中的元素的要求一样,在TypesForSets.java中展示了这一点。任何键都必须具有一个equals()方法;如果键被用于散列Map,那么它必须还具有恰当的hashCode()方法;如果键被用于TreeMap,那么它必须实现Comparable。
下面的示例展示了通过Map接口可用的操作,这里使用了前面定义过的CountingMapData测试数据集:

printKeys()展示了如何生成Map的Collection视图。keySet()方法返回由Map的键组成的Set。因为在Java SE5提供了改进的打印支持,你可以直接打印values()方法的结果,该方法会产生一个包含Map中所有“值”的Collection。(注意,键必须是唯一的,而值可以有重复。)由于这些Collection背后是由Map支持的,所以对Collection的任何改动都会反映到与之相关联的Map。
此程序的剩余部分提供了每种Map操作的简单示例,并测试了每种基本类型的Map。
练习14:(3) 说明java.util.Properties在上面的程序中可以工作。

【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

敏捷Acegi、CAS:构建安全的Java系统
本书是关于Acegi、CAS的权威教程,是Java/Java EE安全性开发者的必备参考书。无论是Java EE安全性编程模型的背景和基础知识,还

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院