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

最新传奇手游开服网站wordpress 设置站点地址

最新传奇手游开服网站,wordpress 设置站点地址,网站备案查询,设计者联盟官网迭代对于我们搞Java的来说绝对不陌生。我们常常使用JDK提供的迭代接口进行Java集合的迭代。Iterator iterator list.iterator();while(iterator.hasNext()){String string iterator.next();//do something}迭代其实我们可以简单地理解为遍历#xff0c;是一个标准化遍历各类…迭代对于我们搞Java的来说绝对不陌生。我们常常使用JDK提供的迭代接口进行Java集合的迭代。Iterator iterator list.iterator();while(iterator.hasNext()){String string iterator.next();//do something}迭代其实我们可以简单地理解为遍历是一个标准化遍历各类容器里面的所有对象的方法类它是一个很典型的设计模式。Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来从而避免向客户端暴露集合的内部结构。 在没有迭代器时我们都是这么进行处理的。如下对于数组我们是使用下标来进行处理的:int[] arrays new int[10];for(int i 0 ; i arrays.length ; i){int a arrays[i];//do something}对于ArrayList是这么处理的:List list new ArrayList();for(int i 0 ; i list.size() ; i){String string list.get(i);//do something}对于这两种方式我们总是都事先知道集合的内部结构访问代码和集合本身是紧密耦合的无法将访问逻辑从集合类和客户端代码中分离出来。同时每一种集合对应一种遍历方法客户端代码无法复用。 在实际应用中如何需要将上面将两个集合进行整合是相当麻烦的。所以为了解决以上问题Iterator模式腾空出世它总是用同一种逻辑来遍历集合。使得客户端自身不需要来维护集合的内部结构所有的内部状态都由Iterator来维护。客户端从不直接和集合类打交道它总是控制Iterator向它发送向前向后取当前元素的命令就可以间接遍历整个集合。上面只是对Iterator模式进行简单的说明下面我们看看Java中Iterator接口看他是如何来进行实现的。一、java.util.Iterator在Java中Iterator为一个接口它只提供了迭代了基本规则在JDK中他是这样定义的对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同1、迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。2、方法名称得到了改进。其接口定义如下public interface Iterator {boolean hasNext();Object next();void remove();}其中Object next()返回迭代器刚越过的元素的引用返回值是Object需要强制转换成自己需要的类型boolean hasNext()判断容器内是否还有可供访问的元素void remove()删除迭代器刚越过的元素对于我们而言我们只一般只需使用next()、hasNext()两个方法即可完成迭代。如下for(Iterator it c.iterator(); it.hasNext(); ) {Object o it.next();//do something}前面阐述了Iterator有一个很大的优点,就是我们不必知道集合的内部结果,集合的内部结构、状态由Iterator来维持通过统一的方法hasNext()、next()来判断、获取下一个元素至于具体的内部实现我们就不用关心了。但是作为一个合格的程序员我们非常有必要来弄清楚Iterator的实现。 下面就ArrayList的源码进行分析分析。二、各个集合的Iterator的实现下面就ArrayList的Iterator实现来分析其实如果我们理解了ArrayList、Hashset、TreeSet的数据结构内部实现对于他们是如何实现Iterator也会胸有成竹的。因为ArrayList的内部实现采用数组所以我们只需要记录相应位置的索引即可其方法的实现比较简单。2.1、ArrayList的Iterator实现在ArrayList内部首先是定义一个内部类Itr该内部类实现Iterator接口如下private class Itr implements Iterator {//do something}而ArrayList的iterator()方法实现public Iterator iterator() {return new Itr();}所以通过使用ArrayList.iterator()方法返回的是Itr()内部类所以现在我们需要关心的就是Itr()内部类的实现在Itr内部定义了三个int型的变量cursor、lastRet、expectedModCount。其中cursor表示下一个元素的索引位置lastRet表示上一个元素的索引位置int cursor;int lastRet -1;int expectedModCount modCount;从cursor、lastRet定义可以看出lastRet一直比cursor少一所以hasNext()实现方法异常简单只需要判断cursor和lastRet是否相等即可。public boolean hasNext() {return cursor ! size;}对于next()实现其实也是比较简单的只要返回cursor索引位置处的元素即可然后修改cursor、lastRet即可public E next() {checkForComodification();int i cursor; //记录索引位置if (i size) //如果获取元素大于集合元素个数则抛出异常throw new NoSuchElementException();Object[] elementData ArrayList.this.elementData;if (i elementData.length)throw new ConcurrentModificationException();cursor i 1; //cursor 1return (E) elementData[lastRet i]; //lastRet 1 且返回cursor处元素}checkForComodification()主要用来判断集合的修改次数是否合法即用来判断遍历过程中集合是否被修改过。在java提高篇(二一)-----ArrayList中已经阐述了。modCount用于记录ArrayList集合的修改次数初始化为0每当集合被修改一次(结构上面的修改内部update不算)如add、remove等方法modCount 1所以如果modCount不变则表示集合内容没有被修改。该机制主要是用于实现ArrayList集合的快速失败机制在Java的集合中较大一部分集合是存在快速失败机制的这里就不多说后面会讲到。所以要保证在遍历过程中不出错误我们就应该保证在遍历过程中不会对集合产生结构上的修改(当然remove方法除外)出现了异常错误我们就应该认真检查程序是否出错而不是catch后不做处理。final void checkForComodification() {if (modCount ! expectedModCount)throw new ConcurrentModificationException();}对于remove()方法的是实现它是调用ArrayList本身的remove()方法删除lastRet位置元素然后修改modCount即可。public void remove() {if (lastRet 0)throw new IllegalStateException();checkForComodification();try {ArrayList.this.remove(lastRet);cursor lastRet;lastRet -1;expectedModCount modCount;} catch (IndexOutOfBoundsException ex) {throw new ConcurrentModificationException();}}这里就对ArrayList的Iterator实现讲解到这里对于Hashset、TreeSet等集合的Iterator实现各位如果感兴趣可以继续研究个人认为在研究这些集合的源码之前有必要对该集合的数据结构有清晰的认识这样会达到事半功倍的效果
http://www.zqtcl.cn/news/445637/

相关文章:

  • readme.md做网站设计网页的快捷网站
  • 做双语网站用什么cms系统好百度后台管理
  • 什么网站可以做试卷企业的oa管理系统
  • 经典网站模板自己做pc网站建设
  • 网站有源码之后怎么建设网站河北加工活外发加工网
  • 什么网站可以做自媒体外包小程序
  • 建网站_网站内容怎么做网络营销的广告形式
  • 静态网站怎么做留言板关键词有哪些
  • 开发软件自学步骤朝阳seo推广
  • Wordpress有用么网络推广seo怎么做
  • 企业做网站的注意事项深圳市建网站
  • 代做网站关键词怎么自创网页
  • 网站建设资金申请报告深圳物流公司收费标准
  • 全能企业网站管理系统做教案比较好的网站
  • 昆明做网站竞价单页营销型网站建设
  • 网站注销备案查询厦门好的做网站公司
  • 大学生兼职网站做ppt数字化营销模式及特点
  • 网站虚拟主机1gwordpress自定义头像插件
  • 网站建设的栏目策划长沙网站制作价
  • h5商城网站怎么建立建设银行网站号
  • 养殖舍建设网站网站设计建设流程图
  • 麦包包的网站建设分析陕西城乡建设部网站
  • 网站测评必须做灯笼制作手工简单又漂亮
  • 购物网站建设的意义与目的wordpress 插件 加速
  • 大型html5浅蓝色网站设计公司dede模板网店怎么开店详细教程
  • 一个阿里云怎么做两个网站吗樱花16q808a
  • 如何利用服务器做网站网站建设朝阳
  • 比邻店网站开发企查查企业信息查询在线
  • 家乡网站建设策划案专业建设专题网站
  • 网站建设公司挣钱吗wordpress评论内容密码保护