首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stack源码解

Stack源码解

作者头像
吉林乌拉
发布2019-08-14 17:44:02
6000
发布2019-08-14 17:44:02
举报
文章被收录于专栏:吉林乌拉吉林乌拉

在前两篇我们已经介绍了两种底层是通过数组方式实现的集合类,它们分别是ArrayList集合和Vector集合。在这一篇中我们继续介绍另一种底层也是用数据方式实现的集合,它就是Stack集合。Stack与ArrayList和Vector相比,有自己独特的一些特性。正是因为Stack有自己独特的特性,所以在使用上Stack与ArrayList、Vector相比有些区别,所以下面我们先了解一下Stack集合的基本使用,然后在分析Stack集合的底层源码。

Stack也就是栈,它和其它集合相比它的特性就是后进先出,也就是后添加到Stack集合中的元素,会被添加到栈的最顶位置。下面我们看一下在Stack集合中的都包括哪些方法。

下面我们通过一个简单的例子来演示上面方法的基本使用。

下面我们分析一下Stack集合的底层源码,还是和ArrayList集合和Vector集合一样,我们先看一下Stack集合的初始化。

源码中只有一个无参的构造主法,这就说明,在我们创建Stack对象时,并不会执行底层数组的初始化。

上面的代码是Stack集合把元素添加到栈顶的方法,我们看上面的代码是不是感觉似曾相识,好像和Vector集合的底层源码一模一样。这是因为Stack集合是Vector集合的子类,也就是Stack集合默认继承了Vector集合。下面是底层源码。

所以我们可以理解为Stack集合的底层实现原理和Vector集合是一样的,包括底层数组的自动扩展规律等特性都是一样的。也就是说Stack集合和Vector集合一样当底层数据超过最大容量时,会自动扩展为原来的2倍容量来存储元素。

下面我们看一下Stack集合中其它方法的底层实现,因为这些方法逻辑已经在Vector集合中介绍过了,并且方法的实现逻辑比较简单,这里我们就不在详细分析了,只是简单展示。

  • peek()
  • pop()
  • search(Object o)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

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

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

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