首页 > 代码库 > 迭代器模式
迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
聚合对象可以是数组,也可以是集合等。
遍历集合,我们可以使用for循环,foreach循环。遍历数组,可以使用for循环,foreach循环。
但是使用上面这两种形式,我们都需要知道聚合对象是数组,还是集合。
但是使用了迭代器之后,我们只要拿到了聚合对象的迭代器之后,就可以遍历元素了,不需要知道聚合对象是集合还是数组。
一般,集合对象可以调用iterator()方法获得自己的迭代器对象,而数组不支持iterator()方法。但是我们可以创建一个迭代器对象 。
1 /** 2 * Integer[]数组 迭代器类 通过构造器传入要迭代的数组对象 3 * @author wly 4 * 5 */ 6 public class ArrayIterator implements Iterator<Integer> { 7 Integer[] arr; 8 int position = 0; 9 public ArrayIterator(Integer[] arr)10 {11 this.arr = arr; 12 }13 @Override14 public boolean hasNext() {15 if(position >= arr.length || arr[position] == null)16 {17 return false;18 }19 return true;20 }21 22 @Override23 public Integer next() {24 Integer ele = arr[position];25 position++;26 return ele;27 }28 29 @Override30 public void remove() {31 throw new UnsupportedOperationException("这个数组迭代器不支持删除元素!"); 32 }33 34 }
提供一个测试类:
1 public class TestClass { 2 3 public static void main(String[] args) { 4 Integer[] a = new Integer[]{1,2,3}; 5 //将数组传入迭代器的构造器中 ,从而让迭代器拿到要迭代的数组对象 6 Iterator iterator = new ArrayIterator(a); 7 while(iterator.hasNext()) 8 { 9 Integer num = (Integer)iterator.next();10 System.out.println(num);11 12 }13 }14 }
迭代器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。