- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于 Java Collections API 您不知道的 5 件
事,第 1 部分
对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其
所有缺点的一个非常需要的替代品。将 Collections 主要与 ArrayList 联系到
一起本身没有错,但是对于那些有探索精神的人来说,这只是 Collections 的
冰山一角。
关于本系列
您觉得自己懂 Java 编程?事实上,大多数程序员对于 Java 平台都是浅尝则止,
只学习了足以完成手头上任务的知识而已。在本 系列 中,Ted Neward 深入挖
掘 Java 平台的核心功能,揭示一些鲜为人知的事实,帮助您解决最棘手的编程
挑战。
虽然 Map (以及它的常用实现 HashMap)非常适合名-值对或键-值对,但是没有
理由让自己局限于这些熟悉的工具。可以使用适当的 API,甚至适当的
Collection 来修正很多易错的代码。
本文是 5 件事 系列 中的第二篇文章,也是专门讨论 Collections 的 7 篇文
章中的第一篇文章,之所以花这么大的篇幅讨论 Collections,是因为这些集合
在 Java 编程中是如此重要。首先我将讨论做每件事的最快(但也许不是最常见)
的方式,例如将 Array 中的内容转移到 List。然后我们深入探讨一些较少人知
道的东西,例如编写定制的 Collections 类和扩展 Java Collections API。
1. Collections 比数组好
刚接触 Java 技术的开发人员可能不知道,Java 语言最初包括数组,是为了应
对上世纪 90 年代初期 C++ 开发人员对于性能方面的批评。从那时到现在,我
们已经走过一段很长的路,如今,与 Java Collections 库相比,数组不再有性
能优势。
例如,若要将数组的内容转储到一个字符串,需要迭代整个数组,然后将内容连
接成一个 String;而 Collections 的实现都有一个可用的 toString() 实现。
除少数情况外,好的做法是尽快将遇到的任何数组转换成集合。于是问题来了,
完成这种转换的最容易的方式是什么?事实证明,Java Collections API 使这
种转换变得容易,如清单 1 所示:
清单 1. ArrayToList
import java.util.*;
public class ArrayToList
{
public static void main(String[] args)
{
// This gives us nothing good
System.out.println(args);
// Convert args to a List of String
ListString argList = Arrays.asList(args);
// Print them out
System.out.println(argList);
}
}
注意,返回的 List 是不可修改的,所以如果尝试向其中添加新元素将抛出一个
UnsupportedOperationException。
而且,由于 Arrays.asList() 使用 varargs 参数表示添加到 List 的元素,所
以还可以使用它轻松地用以 new 新建的对象创建 List。
回页首
2. 迭代的效率较低
将一个集合(特别是由数组转化而成的集合)的内容转移到另一个集合,或者从
一个较大对象集合中移除一个较小对象集合,这些事情并不鲜见。
您也许很想对集合进行迭代,然后添加元素或移除找到的元素,但是不要这样做。
在此情况下,迭代有很大的缺点:
每次添加或移除元素后重新调整集合将非常低效。
每次在获取锁、执行操作和释放锁的过程中,都存在潜在的并发困境。
当添加或移除元素时,存取集合的其他线程会引起竞争条件。
可以通过使用 addAll 或 removeAll,传入包含要对其添加或移除元素的集合作
为参数,来避免所有这些问题。
回页首
3. 用 for 循环遍历任何 Iterable
Java 5 中加入 Java 语言的最大的便利功能之一,增强的 for 循环,消除了使
用 Java 集合的最后一道障碍。
以前
您可能关注的文档
- 塑料模复习题(副本).pdf
- 类别变量中介效应分析.pdf
- 音频系统解决方案LAK12课件.doc
- 第四章 ZS6288 移动电源专用管理IC(PowerBank IC).pdf
- 第三章 Oracle数据库迁移培训 FINAL.ppt
- 第四篇离心泵的相似原理5.ppt
- 浏览器是怎样存储密码的?.pdf
- 第一章 CSC8210 .D类音频功放.pdf
- 第三章 pascal算法讲义-第二讲.pdf
- 2015年北京邮电大学宽带无线移动通信系统新理论和技术、物联网方向(康桂霞)博士研究生招生人数、考试科目.pdf
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
最近下载
- 区域地理主题探究10拉丁美洲和巴西.pptx
- 部编版三年级下册课外阅读理解专项练习10篇附答案(可下载打印).docx VIP
- 油田开发管理纲要.pdf
- 2024年湖南省中考作文“只有走出第一步,才知道自己能走多远”导写+范文6篇.docx
- 《中华人民共和国保守国家秘密法》培训解读课件.pptx VIP
- 重庆市山坪塘整治质量管理技术手册.doc
- Powermax鲍麦克斯AHE58 59-HMI12 三代一体机中文说明书(386P0149C)用户手册.pdf
- 医学试题《先天性心脏病》考试题库无答案(一).doc VIP
- 4.2《动物的食物》大单元教学课件 大象版科学五年级下册.pptx
- 滑坡和泥石流-完整版课件课件.pptx
文档评论(0)