您所在的位置:读书频道 > 设计开发 > Java系列 > 17.8 理解Map

17.8 理解Map

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

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

AD:

17.8   理解Map
正如你在第11章中所学到的,映射表(也称为关联数组)的基本思想是它维护的是键-值(对)关联,因此你可以使用键来查找值。标准的Java类库中包含了Map的几种基本实现,包括:HashMap,TreeMap,LinkedHashMap,WeakHashMap,ConcurrentHashMap,IdentityHashMap。它们都有同样的基本接口Map,但是行为特性各不相同,这表现在效率、键值对的保存及呈现次序、对象的保存周期、映射表如何在多线程程序中工作和判定“键”等价的策略等方面。Map接口实现的数量应该可以让你感觉到这种工具的重要性。
你可以获得对Map更深入的理解,这有助于观察关联数组是如何创建的。下面是一个极其简单的实现:

关联数组中的基本方法是put()和get(),但是为了容易显示,toString()方法被覆盖为可以打印键-值对。为了展示它可以工作,main()用字符串对加载了一个AssociativeArray,并打印了所产生的映射表,随后是获取一个值的get()。
为了使用get()方法,你需要传递想要查找的key,然后它会将与之相关联的值作为结果返回,或者在找不到的情况下返回null。get()方法使用的可能是能想象到的效率最差的方式来定位值的:从数组的头部开始,使用equals()方法依次比较键。但这里的关键是简单性而不是效率。
因此上面的版本是说明性的,但是缺乏效率,并且由于具有固定的尺寸而显得很不灵活。幸运的是,在java.util中的各种Map都没有这些问题,并且都可以替代到上面的示例中。
练习12:(1) 在AssociativeArray.java的main()中替代为使用HashMap、TreeMap和LinkedHashMap。
练习13:(4) 使用AssociativeArray.java来创建一个单词出现次数的计数器,用String映射到Integer。使用本书中的net.mindview.util.TextFile工具打开一个文本文件,并使用空格和标点符号将该文件断开为单

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

回书目   上一节   下一节

分享到:

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

热点职位

更多>>

热点专题

更多>>

读书

Java (JDK 6)学习笔记
Java学习笔记在JavaWorld技术论坛(http://www.javaworld.com.tw/)和作者的网站(http://caterpillar.onlyfun.net/Gossip/)提

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院 区块链第一聚合媒体 zhijiapro