当前位置: 首页 > news >正文

营销型网站备案sql网站源码

营销型网站备案,sql网站源码,北京网站外包公司,2020 惠州seo服务迭代器模式迭代器模式又叫做游标(Cursor)模式#xff0c;其作用是提供一种方法访问一个容器元素中的各个对象#xff0c;而又不暴露该对象的内部细节。迭代器模式结构迭代器模式由以下角色组成#xff1a;1、迭代器角色负责定义访问和遍历元素的接口2、具体迭代器角色实现迭…迭代器模式迭代器模式又叫做游标(Cursor)模式其作用是提供一种方法访问一个容器元素中的各个对象而又不暴露该对象的内部细节。迭代器模式结构迭代器模式由以下角色组成1、迭代器角色负责定义访问和遍历元素的接口2、具体迭代器角色实现迭代器接口并要记录遍历中的当前位置3、容器角色负责提供创建具体迭代器角色的接口4、具体容器角色实现创建具体迭代器角色的接口这个具体迭代器角色与该容器的结构相关迭代器模式在JDK中的应用及解读迭代器模式就不自己写例子了直接使用JDK中的例子。为什么我们要使用迭代器模式思考一个问题假如我有一个ArrayList和一个LinkedList如何去遍历这两个List相信每个人都很清楚运行结果为这是因为恰好我们知道ArrayList和LinkedList的访问方式有些喜欢研究的人知道ArrayList和LinkedList的内部结构但如果现在我给你一个HashSet将如何遍历可能你还以为可以使用类似List的遍历方式不过很遗憾HashSet中根本没有提供get方法。这时候就轮到迭代器出场了不管是什么数据结构不管你听过还是没听过不管你见过还是没见过只要它实现了Iterable接口都可以用类似的方式去遍历我把ArrayList、LinkedList、HashSet的遍历写在一起看一下运行结果看到这就遍历出来ArrayList、LinkedList、HashSet了以后遇到一个集合只要实现了iterable接口也都可以类似这么遍历。这就是开头迭代器模式的定义说的开发者不需要知道集合中如何去遍历的细节只管用类似的遍历方法就好了。Iterable接口和Iterator接口这两个都是迭代相关的接口可以这么认为实现了Iterable接口则表示某个对象是可被迭代的Iterator接口相当于是一个迭代器实现了Iterator接口等于具体定义了这个可被迭代的对象时如何进行迭代的。参看Iterable接口的定义这样对象就可以使用这个类的迭代器进行迭代了一般Iterable和Iterator接口都是结合着一起使用的。为什么一定要实现Iterable接口而不直接实现Iterator接口了呢这个问题我也是在自己写了ArrayList和LinkedList的实现之后才想明白的这么做确实有道理因为Iterator接口的核心方法next()或者hasNext()都是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口势必导致集合对象中包含当前迭代位置的数据当集合在不同方法间被传递时由于当前迭代位置不可预置那么next()方法的结果会变成不可预知的。除非再为Iterator接口添加一个reset()方法用来重置当前迭代位置。但即使这样Collection也同时只能存在一个当前迭代位置。而Iterable每次调用都返回一个从头开始计数的迭代器多个迭代器时互不干扰。可能这么解释不是很明白再解释明白一点我自己写的一个ArrayList如果直接实现Iterator接口那么势必是这么写的这么问题就来了如果一个ArrayList实例被多个地方迭代next()方法、hasNext()直接操作的是ArrayList中的资源假如我在ArrayList中定义一个迭代位置的变量那么对于不同调用处这个迭代变量是共享的线程A迭代的时候将迭代变量设置成了第5个位置这时候切换到了线程B对于线程B来讲就从第5个位置开始遍历此ArrayList了根本不是从0开始如何正确迭代实现Iterable接口返回一个Iterator接口的实例就不一样了我为自己写的ArrayList定义一个内部类每次都返回一个返回一个ArrayListIterator实例出去这就保证了即使是多处同时迭代这个ArrayList依然每处都是从0开始迭代这个ArrayList实例的。迭代器模式的优缺点优点1、简化了便利方式对于对象集合的遍历还是比较麻烦的对于数组或者有序列表我们还可以通过下标来获取但用户需要在对集合很了解的情况下才能自行遍历对象(有时即使你了解了集合还未必能直接遍历比如上面的HashSet就没有提供get方法)。而引入了迭代器方法后用户用起来就简单地多了2、可以供多种遍历方式比如对于有序列表可以正向遍历也可以倒序遍历只要迭代器实现得好3、封装性好用户只需要得到迭代器就可以遍历而对于遍历算法则不用去关心缺点对于比较简单的遍历(数组或者有序列表)使用迭代器方式遍历较为繁琐而且遍历效率不高使用迭代器的方式比较适合那些底层以链表形式实现的集合
http://www.zqtcl.cn/news/923564/

相关文章:

  • 火山开发软件可以开发网站吗盐城代运营
  • 网页制作与网站建设从入门到精通民宿客栈网站制作
  • 如何写手机适配网站自己做的网站能上传到凡科吗
  • 建设公司网站开发方案seo优化工具的种类
  • 没备案的网站怎么做淘客企业做网站服务费
  • 网址站点异常怎么解决机关单位建设网站 说明
  • 阿虎手机站青岛关键词排名系统
  • 西安网站建设聚星互联网站成功案例
  • 山东鲁为建设集团网站百度的合作网站有哪些
  • 电子商务网站建设与管理程序设计题6哪家微网站做的好
  • 网站建设图文片平面网页设计是什么
  • 域外网站宁波建设监理协会
  • 胶州网站建设公司哪家好wordpress怎么改标题
  • php网站开发综合案例免费注册推广网站
  • 邯郸做网站的地方广州网站制作
  • 企业网站制作公司24小时接单郑州手机网站推广外包
  • 接做施工图的网站手机移动网站模板
  • 做网站月薪资多少钱如何打开微信小程序
  • 免费建站网站一级大录像不卡在线看网页无锡网站排名提升
  • 无锡门户网站制作服务郑州艾特网站建设
  • 建设网站 万网网页设计表单代码模板
  • 网站速度查询app开发模板网站
  • 国外案例网站做电商网站有什么用
  • 自己做的网站点击赚钱免费制作二级网站
  • 产品包装设计网站网站开发所需费用
  • 新手学做百度联盟网站html水平导航栏怎么做
  • 单页网站排名seo营销软件
  • 网站建设项目报告书广州品牌网站设计价格
  • 阜阳市建设工程网站wordpress三栏博客主题
  • 邢台学校网站建设制作游戏需要多少钱