03_Vector和Stack

本文深入分析了Java中Stack的数据结构和源码,Stack基于ArrayList实现,继承了其快速获取元素的优点,但插入和删除操作较慢。主要关注push和pop方法,这两个操作是Stack的核心。push方法通过addElement向ArrayList末尾添加元素,可能涉及扩容;pop则通过removeElementAt移除并返回栈顶元素。了解这些可以帮助优化基于Stack的程序设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 基本原理和优缺点

Stack继承了Vector,Vector底层还是一个List,也就是基于数组来实现的,所以ArrayList有的优点,比如获取元素的速度快,随机读,它都有,与此相对的,ArrayList的缺点,比如从中间插入一个元素,从中间删除一个元素,Stack也存在。

但是呢,Stack使用最多的方法就是push和pop,换句话说,Stack的作者并非希望我们把使用ArrayList的那一套,直接放到Stack上做。

如果严格按照push和pop来执行,就可以避免中间操作元素时,产生移动元素的后果了。当然了,频繁向Stack push元素,仍然可能导致扩容。

栈和队列(LinkedList)的实现有所不同,栈是"后进先出",而队列是"尾进头出"。

二. 源码分析

2.1 push

Stack底层与ArrayList非常相似,存储数据的容器是数组。

public E push(E item) {
   
   
	addElement(item);
	retu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值