前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Review (二十三、集合-----概述)

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

作者头像
三分恶
发布2020-07-16 13:14:29
2630
发布2020-07-16 13:14:29
举报
文章被收录于专栏:三分恶的专栏三分恶的专栏

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

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

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

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

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

图一:Java集合体系

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

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

图二:Collection集合体系继承树

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

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

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

图三:Map集合体系继承树

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

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

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

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

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

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

图四:三种集合示意图

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档