微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Review (二十三、集合-----概述

@@H_502_1@

目录

    @H_502_1@

    Java 最初版本只为最常用的数据结构提供了很少的一组类:Vector、 Stack、Hashtable、BitSet 与 Enumeration 接口。@H_502_1@

    随着 Java SE 1.2 的问世,设计人员感到是推出一组功能完善的数据结构的时机了。面对一大堆相互矛盾的设计策略,他们希望让类库规模小且易于学习, 而不希望像 C++ 的“ 标准模版库” (STL) 那样复杂,但却又希望能够吸收 STL 率先推出的“ 泛型算法” 所具有的优点。@H_502_1@

    他们希望将传统的类融人新的框架中。与所有的集合类库设计者一样, 他们必须做出一些艰难的选择,于是,在整个设计过程中,他们做出了一些独具特色的设计决定。@H_502_1@

    与现代的数据结构类库的常见情况一样, Java 集合类库也将接口( interface) 与 实现(implementation) 分离。@H_502_1@

    Java 的集合类主要由两个接口派生而出 : Collection 和 Map , Collection 和 Map 是 Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类 。

    @H_502_1@

    图一:Java集合体系

    在这里插入图片描述@H_502_1@

    @H_502_1@

    图二所示是 Collection 接口、子接口及其实现类的继承树 :@H_502_1@


    @H_502_1@

    图二:Collection集合体系继承树

    在这里插入图片描述@H_502_1@

    @H_502_1@

    图二显示了 Collection 体系里的集合,其中粗线圈出的 Set 和 List 接口是 Collection 接口派生的两个子接口,它们分别代表了无序集合和有序集合; Queue 是 Java 提供的队列实现。@H_502_1@

    图三所示是 Map 体系的继承树,所有的 Map 实现类用于保存具有映射关系的数据 。

    @H_502_1@

    图三:Map集合体系继承树

    @H_502_1@

    在这里插入图片描述@H_502_1@@H_502_1@

    图三显示了 Map 接口的众多实现类 ,这些实现类在功能、用 法上存在一定 的差异,但它们都有一个功能特征: Map保存的每项数据都是 key-value 对,也就是由 key 和 value 两个值组成 。@H_502_1@

    就像成绩单:语文-79 , 数学-80 , 每项成绩都由两个值组成,即科目名和成绩 。 对于一张成绩表而言 ,科目通常不会重复,而成绩是可重复的,通常习惯根据科目来查阅成绩,而不会根据成绩来查阅科目 。@H_502_1@

    Map 与此类似, Map里的 key 是不可重复的, key 用于标识集合里 的每项数据,如果需要查阅 Map中的数据时,总是根据 Map 的 key 来获取。@H_502_1@

    对于图二和图 三中粗线标识的 4 个接口,可以把 Java 所有集合分成三大类 ,其中 :@H_502_1@

    • Set 集合类似于一个罐子 ,把一个对象添加到 Set 集合时, Set 集合无法记住添加这个元素的顺序,所以 Set 里的元素不能重复(否则系统无法准确识别这个元素) ;
    • List 集合非常像一个数组 ,它可以记住每次添加元素的顺序 、且 List 的长度可变;
    • Map 集合也像一个罐子,只是它里面的每项数据都由两个值组成 。


    @H_502_1@

    图四:三种集合示意图

    @H_502_1@

    在这里插入图片描述@H_502_1@@H_502_1@



    @H_502_1@

    参考:
    【1】:《Java核心技术 卷一》
    【2】:《疯狂Java讲义》
    【3】:Java集合框架|菜鸟教程@H_502_1@

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐