Stack与Queue

Stack与Queue

1、Stack

stack的底层是动态数组

2、Queue

Queue的底层是继承了Collection。

2.1 数组的顺序存储结构你概述

可以实现循环队列

​ 最好的方法就是添加外部指针用来保存“队头”和“队尾”。时间复杂度都是O(1);如果不是循环队列可能会导致数组索引溢出

###2.2 队列的链式存储结构

单链表。尾插法。保存头部指针

3、stack 和queue的迭代

stack继承自ListIterator。而队列继承的是iterator接口

ArrayList首先实现了Iterator接口,实现类为Itr。ArrayList中iterator()方法返回的是Itr对象。ArrayList中Listiterator方法进行了重载,有两种调用ListItr的方法

LinkedList实现了ListIterator接口,实现类为ListItr。

LinkedList中还有一个DescendingIterator实现了Iterator接口,反向遍历,还是借助ListItr实现的

Iterator与ListIterator:

是一个功能更加强大,继承与Iterator接口,只能用于各种List类型的访问。

区别:

    1. ListIterator有add方法,可以向List中添加对象,而Iterator不可以
    1. List Iterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是:ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
    2. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
    3. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值