转载自:https://mp.weixin.qq.com/s/gxIbhqjMZKx3PwOHUMeTYw
方法迭代,代的更迭,从初代到末代的遍历,指对某类集合中的每个元素按顺序取出的行为。举个例子,通常我们读小说是从前往后翻,一页接着一页地读,这样我们才可以了解一个连续完整的故事,那这就需要我们顺序地迭代整本书的每一页内容。 相信大家都用过集合类吧,最常用的比如List,Set,Map以及各种各样不同数据表示实现,总之是把某一批类似的元素按某种数据结构集合起来作为一个整体来引用,不至于元素丢的到处都是难以维护,当要用到每个元素的时候,我们需要将它们一个个的取出来,但是对不同的数据类型访问方式各有不同,于是我们就需要定义统一的迭代器来标准化这种遍历行为。
为何会有各种各样的遍历方式呢?比如说弹夹,装填子弹的时候要一颗一颗的进行压栈,等到射击的时候就需要迭代操作,先出栈拿出最后装填的子弹再进行射击,然后反向往前遍历直到最初装填的子弹直到射完为止,此刻也代表着迭代的结束,整个过程像是内存栈的操作,先进后出,后进先出,当然这并不代表其迭代器非要先进后出,这里只是举例说明针对不同数据类型进行不同的迭代方式。
以上数据结构及迭代器其实都有现成的类去实现,那么我们这里来自定义一种全新的数据结构,可以防止碰瓷!?牛吹得有点大了,我们就以行车记录仪举例,大家先想想怎么来记录一段一段的视频呢?如果我们简单的利用ArrayList去记录,那它得有多大空间去支持一直拍摄视频?
我们知道其实它是循环覆写的,待空间不够用时,最新的视频总会去覆盖掉最老的视频,以首尾相接的环形结构解决空间有限的问题。好,开始代码实战,首先我们定义一个行车记录仪类。
public class DrivingRecorder {
private int index = -1;// 当前记录位置
private String[] records = new String[10];// 假设只能记录10条视频
public void append(String record) {
if (index == 9) {// 循环覆盖
index = 0;
} else {
index++;
}
records[index] = record;
}
public void display() {// 循环数组并显示所有10条记录
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?