迭代器Iterator
来源:互联网 发布:java gbk utf8 转换 编辑:程序博客网 时间:2024/06/07 06:48
package cn.test.collection;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/** -----|Collection 单例集合的根接口* --------|List 实现List接口的话 有序 可重复* --------|Set 实现Set接口的话 无序 不可重复* * Collection--- 迭代的方法* toArray() * iterator() * * 迭代器的作用:* 用于抓取集合中的元素* * 迭代器的方法:* boolean hasNext() 问是否有元素可遍历,如果仍有元素可以迭代,则返回 true。 E next() 返回迭代的下一个元素。 全部返回就报错 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 java.util.NoSuchElementException 没有元素的异常 异常的原因:没有元素可以迭代了*/public class Demo2 { public static void main(String[] args) { Collection c = new ArrayList(); c.add("狗娃"); c.add("狗剩"); c.add("铁蛋"); c.add("美美"); /*//遍历集合的元素 --- 方式一:可以使用toArray方法。 Object[] arr = c.toArray();//toArray把集合的元素存储到toArray中返回 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+","); }*/ //要求使用迭代器遍历数组 iterator() //疑问:iterator()方法返回时一个接口类型,为什么接口又可以调用方法可以使用呢? //iterator()方法实际返回的是接口的实现类对象 Iterator it = c.iterator();//返回一个迭代器 疑问:iterator()方法返回时一个接口类型,为什么接口又可以调用方法可以使用呢? System.out.println("有元素可以遍历吗?"+it.hasNext()); while(it.hasNext()){//hasnext() 问是否有元素可以遍历 System.out.println("获取元素:"+it.next()); } //System.out.println("获取元素:"+it.next()); 加上这句会报错 --java.util.NoSuchElementException 没有元素的异常 }}
/*Iterator()各方法的源码*/ private class Itr implements Iterator<E> { int cursor; // index of next element to return int lastRet = -1; // index of last element returned; -1 if no such int expectedModCount = modCount; public boolean hasNext() { return cursor != size; } @SuppressWarnings("unchecked") 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; return (E) elementData[lastRet = i]; } 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(); } }
0 0
- Iterator(迭代器)
- Iterator-迭代器
- 迭代器 iterator
- Iterator迭代器
- 迭代器Iterator
- Iterator : 迭代器
- Iterator : 迭代器
- 迭代器Iterator
- 迭代器iterator
- Iterator迭代器
- Iterator迭代器
- iterator (迭代器)
- 迭代器iterator
- 迭代器iterator
- 迭代器 iterator
- 迭代器 Iterator
- 迭代器Iterator
- 迭代器iterator
- Android定义生命周期的优点
- 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果
- poj 2187 Beauty Contest Andrew
- Wpf ImageSource对象与Bitmap对象的互相转换
- 指针算术
- 迭代器Iterator
- Codeforces Round #251 (Div. 2) 439D Devu and his Brother(脑洞)
- HTML/CSS基础
- Linux平台上SQLite数据库教程(二)——C语言API介绍
- POJ 2184Cow Exhibition(01背包变形)
- linux学习笔记1-虚拟机安装 UBUNTU u盘无法识别
- 【more effective c++读书笔记】【第3章】异常(2)
- Android RecyclerView 使用完全解析 体验艺术般的控件
- ORA-00001: unique constraint (...) violated并不一定是数据冲突