您当前的位置: 首页 > 

小志的博客

暂无认证

  • 2浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式是什么鬼(迭代器)

小志的博客 发布时间:2019-05-31 13:59:47 ,浏览量:2

转载自: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             
关注
打赏
1661269038
查看更多评论
0.3258s