zoukankan      html  css  js  c++  java
  • 设计模式之迭代器模式解析学习源码(十八)

    原文献上, 点击滴滴滴


    迭代器模式(Iterator)定义: 提供一种方法顺序访问聚合对象的各个元素吗而又不暴露该对象的内部展示

    不用Iterator的坏处

    • 原文中编写了三个简单的集合 ArraryList HashSet LinkedList 原先是没有实现Iterable 内部没有具体实现iterator
    • 问题1: 遍历的时候遍历了几次
      • 使用数组遍历的时候实际是遍历了两次, 由于System.arrayCopy 和 set的 toArray 看不到源码, 但是LinkedList 可以看到链表遍历了一次, 然后我们再遍历这个数组, 打印
    • 问题2: 如何解决这个问题
      • 可以给 LinkedList ArrayList 加get(index)的方法遍历, 但是HashSet就没法了, 实际上是Map的key集合, 无序的, 实际上这里面linkedList的get 比较麻烦了, 所以有查询的性能的问题
    • 总结: 牛人左哥: "那就用迭代器模式吧"

    看迭代器模式与非迭代的UML区别

    • 很相似, 但迭代器模式有个接口这个概念
    • 遍历对象的区间

    迭代器模式有哪些说不上的缺点

    • 具体的集合类与具体的迭代器是绑定的关系, 这种实现方式几乎没有复用的可能, 可以看着是特事特办, 算是把双刃剑, 权衡自己把握

    class文件的描述

    • 以前重来都没有去尝试解析
    • 现在先记下
      • invoke 调用 virtual(实现类)方法 interface(接口)方法
      • astore 赋值栈 _33+1个引用变量
      • aload 压入值栈 _33+1个引用变量
      • checkcast 检测类型转换
      • getStatic 获取静态属性
      • ifne 如果返回true就 执行
  • 相关阅读:
    我的大学(转作者袋袋鼠)
    Reporting Services使用问题
    爱的真谛(转)
    无题
    工作???
    带老弟做项目,凉了
    学妹问,学网站开发还是打 ACM?
    在字节跳动的实习经历分享 | 万字求职指南
    云开发是啥?看看它在编程导航项目的实践
    我删库跑路失败了
  • 原文地址:https://www.cnblogs.com/denghailei/p/6836306.html
Copyright © 2011-2022 走看看