java之Iterator
来源:互联网 发布:linux vi下查找字符串 编辑:程序博客网 时间:2024/05/14 13:47
1.概念
Iterator接口
迭代对于我们搞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<String> list = new ArrayList<String>(); for(int i = 0 ; i < list.size() ; i++){ String string = list.get(i); //do something }
对于这两种方式,我们总是都事先知道集合的内部结构,访问代码和集合本身是紧密耦合的,无法将访问逻辑从集合类和客户端代码中分离出来。同时每一种集合对应一种遍历方法,客户端代码无法复用。 在实际应用中如何需要将上面将两个集合进行整合是相当麻烦的。所以为了解决以上问题,Iterator模式腾空出世,它总是用同一种逻辑来遍历集合。使得客户端自身不需要来维护集合的内部结构,所有的内部状态都由Iterator来维护。客户端从不直接和集合类打交道,它总是控制Iterator,向它发送”向前”,”向后”,”取当前元素”的命令,就可以间接遍历整个集合。
2.方法
Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合、Map系列集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口里定义了如下4个方法:
–boolean hasNext():如果被迭代的集合还元素没有被遍历,则返回true。
–Object next():返回集合里下一个元素。
–void remove() :删除集合里上一次next方法返回的元素
–void forEachRemaining(Consumer action),这是Java 8为Iterator新增的默认方法,该方法可使用Lambda表达式来遍历集合元素。
3.实例
public static void main(String[] args) { // 创建集合、添加元素的代码与前一个程序相同 HashSet books = new HashSet(); //List books = new ArrayList(); //Collection books = new HashSet(); books.add("轻量级Java EE企业应用实战"); books.add("疯狂Java讲义"); books.add("疯狂Android讲义"); // 获取books集合对应的迭代器 Iterator it = books.iterator(); while(it.hasNext()) { // it.next()方法返回的数据类型是Object类型,因此需要强制类型转换 String book = (String)it.next(); System.out.println(book); if (book.equals("疯狂Java讲义")) { // 从集合中删除上一次next方法返回的元素 it.remove(); } // 对book变量赋值,不会改变集合元素本身 book = "测试字符串"; //① } System.out.println(books); }}
3.2.
- Java之Iterator
- java之foreach&Iterator
- java之Iterator迭代器
- Java之Iterator接口
- java学习之Iterator
- java之Iterator
- java之Iterator迭代器
- java之iterator分析
- java设计模式之Iterator
- Java设计模式之Iterator
- JAVA学习之迭代器Iterator
- java集合之迭代器Iterator
- java初学之iterator迭代器
- Java复习之Iterator接口
- Java学习之迭代器Iterator
- java设计模式之迭代器 Iterator
- Java设计模式之Iterator模式
- Java学习之迭代器(Iterator)
- POJ - 1157 LITTLE SHOP OF FLOWERS解题报告
- Ubuntu14.04反编译Apk[试试就知道]
- 百度云盘1550010
- 移动智能网原理、体系架构,及基本业务过程 - CAMEL1/2
- eclipse中FindBugs插件的安装与使用
- java之Iterator
- opencv3.1 boost级联分类器
- React-Native中处理ListView上拉加载更多
- python2 import urllib2报错
- 欢迎使用CSDN-markdown编辑器
- python、main函数和argv参数
- TreeView简单使用
- 链表
- 传输资料在100MB以上的 传输介质选择