总览 Java 容器--集合框架的体系结构

前言

我们在讲 Java 的数据类型的时候,单独介绍过数组,数组也确实是开发程序中常用的内存类型之一,不过 Java 内置的数组限制颇多,所以此后扩展出了List这种结构,与之类似的Set、Queue 这些内存中的容器都被放在了 Collection 类族下,加之另一种代表常用的数据结构 Map 类族,这些聚合到一起构成了 Java 中集合框架的整个体系。

上面说的这些都是同步容器,费线程安全,后来 Java 又引入了并发容器,不过那些内容属于 J.U.C ,等讲到并发章节了我们再涉及。本文内容偏理论,后面会有三节专门介绍List、Set、Map 的使用和他们提高开发效率的常用操作总结,本文大纲如下:



集合框架的体系介绍

Java 的集合框架由两大类族组成,Collection 和 Map。

顾名思义,集合(Collection)代表一组对象。 Java 集合框架由一组接口和类组成,这些接口和类有助于处理不同类型的集合,例如 List 、Set、Map、Stack 和 Queue 等。

在我们需要处理同构和异构对象集合的地方,Java 提供现成的集合类解决了许多非常常见的问题。常见操作涉及添加、删除、更新、排序、搜索和更复杂的算法,这些集合类为使用 Collections API 的所有此类操作提供非常透明的支持。

下图是集合框架的体系结构总览



这个图里面总体地展示出了集合框架的每一个接口、抽象类和具体类,一开始看会觉得眼花缭乱,不知如何看起。

集合框架核心接口介绍

通过先梳理核心接口,可以更好地理解集合框架,所有的集合类都是通过实现这些接口提供具体的功能。

下图展示了集合框架中的核心接口



核心接口主要包括 Collection 和 Map 两种,Collection 表示存储着对象的集合,而 Map 表示存储着键值对的映射表。

Collection

Collection 接口是层次结构的根接口。 Collection 接口定义了具体集合类必须支持的所有通用方法(或抛出 UnsupportedOperationException)。它扩展了 Iterable 接口,增加了对使用“for-each loop”语句迭代集合元素的支持。

Collection interface 定义的方法如下,都是关于集合的通用方法

所有其他集合接口和类(Map 除外)都扩展或实现了Collection interface。例如,List、 Set 接口都继承了 Collection Interface。

List

List 表示元素的有序集合。使用列表,我们可以通过它们的整数索引(列表中的位置)访问元素,并在列表中搜索元素。跟数组一样,列表的索引从 0 开始。 Java 中最常用的 List 实现类,是 – ArrayList、CopyOnWriteArrayList、LinkedList、Stack 和 Vector。

Set

Set 表示无重复元素的集合, Set 接口不保证以任何可预测的顺序返回元素,其子接口 SortedSet 提供元素以自然顺序排序或者以创建时提供的 Comparator 排序元素的能力。

Queue

Queue 接口表示队列这种数据结构,队列旨在将元素插入队列的末尾,并从队列的开头删除元素。这类似于超市中排队的工作方式。

Deque

Deque 接口表示一个双端队列,这意味着可以在队列的两端添加和删除元素。 Deque 这个名字是双端队列的缩写。 Deque 这个词的发音是“deck”——就像一副牌的“deck”。 因为您可以从 Java Deque 的两端入队和出队,所以可以将 Deque 用作队列和堆栈。 Deque 接口扩展了 Queue 接口,所以可以在使用 Deque 时使用所有 Queue 接口里的方法。 Deque 接口没有扩展 Java Stack 接口,但 Deque 接口定义了一些方法,使我们能够执行通常在堆栈上执行的操作(push、peek、pop)。

Map

Map 接口使我们能够将数据存储在键值对中(键是不可变的)。Map 中不能包含重复的键,每个键只能映射到一个值。 Map 接口提供了三个集合视图,允许将 Map 的内容视为一组键、一组值或一组键值映射。一些 Map 实现类,如 TreeMap 类,对它们的顺序做出特定保证,其他的,比如 HashMap 类则没有任何顺序上的保证。

SortedMap

SortedMap 接口是 Map 接口的扩展,表示一个键被排序的 Map。因此,可以按排序顺序迭代存储在SortedMap 中的键,而不是在普通 Map 中迭代它们的那种随机顺序。上面说的 TreeMap 类就是实现的SortedMap 接口。

总结

这里只是把Java 集合框架的体系结构和核心接口做了介绍,让我们集合框架里提供了哪些接口,以及它们主要的实现类,给后续的学习提供一个指导方向,后面会在深入学习每种接口它们经常被用到的实现类。

#Java##程序员#
全部评论

相关推荐

点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务