java集合框架思考.doc

java集合框架思考.doc

ID:51075252

大小:130.00 KB

页数:12页

时间:2020-03-18

java集合框架思考.doc_第1页
java集合框架思考.doc_第2页
java集合框架思考.doc_第3页
java集合框架思考.doc_第4页
java集合框架思考.doc_第5页
资源描述:

《java集合框架思考.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、,值value)的集合。所以我们可以在笛卡儿正交坐标平曲上画出漂亮的函数图像,因为在集合论看来,函数(映射)就是二维平面上的一个个点,明白了?这样一来上面的“有序集”也好理解了,偏序关系a>b>c>d>...(不知道“偏序关系”就把它们看作是数组x[l]=a,x⑵二b,x[3]=c,x[4]=d...好了)等效于无序集{(1,a),(2,b),(3,c),(4,d),...},于是乎,所有的集合都等效于无序集!所以高屮只教了我们一种集合,呵阿……JCF的全家福好啦好啦,这些我们都知道,又不是在上数学课,说了这么多废话,怎么还没扯到正题上来?JCF的影子我还没看见呢!列位看官

2、别急,这就给您道来。其实上面的概念对理解JCF非常重要。JCF是个颇有点规模的家族,看看它的类层次关系图就知道了,下面这张图(图1)摘自著名的ThinkinginJava:!!INCLUDEPICTURE〃f订e:///C:/Users/韩翔/Desktop/转JAVA集合框架思考-phoebus0501一博客园_files/o_collection.gif^^r1图1JCF层次结构哇,这么多接口和类,真有点让人无从下手的感觉。其实我们真正需要记住的只是这么一个超超easy的结构(图2):!!INCLUDEPTCTURE〃f订e:///C:/Users/韩翔/Desktop

3、/转JAUA集合框架思考-phoebus0501-酋客园_历1es/o_collectionl.gif'^r1图2这张图看起来舒服多了吧?但它又能说明什么问题呢?它怎么就能够把握整个JCF呢?我们把Collection接口置于最顶上,意思是想说:Collection其实是整个JCF家族et和SortedMap,它们分别是AbstractSet和AbstractMap的子接口,而TreeSet和TreeMap又分别是他们的一种实现。熟悉数据结构的人可能比较了解,哈希表在进行插入、删除、杳找这样的操作是很快的,其时间复杂度是常数级0(1);平衡二叉树虽然插入、删除操作比较麻烦(

4、需要0(logn)的代价),但进行遍历和排序却很快。选择完全在于用户的侧重点,但由于类型转换的方便性,通常我们用哈希表构造一个集合以示,再把它转换成相应的树集进行遍历,以获得较好的效果。Setsetl=newHashSet();setl.add(elemi);//通过插入元素构造集合setl.add(elem2);setl.adcl(elem3);Setset2二newTreeSet(set);Iteratorall=set2.iterator();while(all.hasNext()){//遍历集合all.next();•••}2.历史实现vs.新实现历史实现(Lega

5、cyImplementations)是JCF的一个术语,准确的意义不是很清楚,但大致可以认为在Java2(JDK1.2)出现以前的老版本中JCF的一个雏形框架。Java2以后,JCF才开始完善健壮起来,新实现屮出现了一些新的类用于替代老版木屮的成员,但由于种种原因,老版木中很多类都代表了传统数据结构的精髓部分,以及一些安全原因,所以仍然被我们使用肴。Enumerationvs.IteratorEnumeration是一个传统的集合遍历T具,在新的JCF屮使用的是Iterator,Iterator同样具有遍历功能,还包含一个remove()方法来删除当前得到的元素。Dicti

6、onaryvs.MapDictionary是一个现在已经被标记为deprecated的类,实现了老版木屮的映射功能,现在已经完全被Map取代。它们的区别是:Dictionary不key和value不能为null,但Map却允许空的关键字和值,这一点直接影响到它们的麻代:Ilashtable和IlashMapoVectorvs.ArrayListVector和ArrayList是数组在JCF屮的体现,还记得前面讲过的数组的缺点么?Vector和ArrayList就是一种可以动态增长的数组。Vector是历史实现,它和ArrayList的主要区别在于,Vector是同步集合(或

7、者说是线程安全的),但ArrayList并不是同步的,由于同步需要花一定的代价,所以ArrayList看起来要比Vector的存取访问效率更高。关于同步我们下面还将要谈到。Hashtablevs.HashMapHashtable是Dictionary的了类,属于历史实现,而HashMapMap的了类,是新实现。它们的区别除了上面所说的key和value是否可以为空Z外,也有同步的差别,Hashtable是同步的I--□□料□孩,嘤用—□AAL、+巾庙怂必E1A□漆、□帀悄忱口口入□'□AA?.・「」「为:移*釦禳—

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。