首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >迭代器模式

迭代器模式

作者头像
提莫队长
发布于 2019-02-21 11:38:40
发布于 2019-02-21 11:38:40
8880
举报
文章被收录于专栏:刘晓杰刘晓杰

1.定义

提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。

2.实现(遍历工程员工)

代码语言:javascript
复制
public class Employee {
    public String name;
    public int age;

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Employee [name=" + name + ", age=" + age + "]";
    }
}

/**
 * 迭代器接口
 */
public interface Iterator {
    boolean hasNext();
    Object next();
}

/**
 * 遍历员工的迭代器
 */
public class EmployeeIterator implements Iterator {
    private ArrayList<Employee> list;
    private int position = 0;

    public EmployeeIterator(ArrayList<Employee> list) {
        this.list = list;
    }

    @Override
    public boolean hasNext() {
        return position + 1 > list.size() ? false : true;
    }

    @Override
    public Object next() {
        return list.get(position++);
    }

}

/**
 * 要遍历的数据
 */
class Data{
    private ArrayList<Employee> employees = new ArrayList<Employee>();

    public Data() {
        employees.add(new Employee("1111", 12));
        employees.add(new Employee("2222", 123));
        employees.add(new Employee("3333", 127));
    }

    public Iterator iterator(){
        return new EmployeeIterator(employees);
    }
}

测试代码
        Data data = new Data();
        Iterator iterator = data.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

3.总结

迭代器模式发展至今,几乎所有的高级语言都有相应的内置实现,对于开发者而言,已经极少会自己去实现迭代器了,所以本章内容更多的是了解而非应用。 1.优点 (1)符合面向对象设计原则中的单一职责原则。 (2)支持对容器对象的多种遍历。弱化了容器类与遍历算法之间的关系。 2.缺点 (1)类文件的增加。 (3)会出现ConcurrentModificationException异常。 (2)遍历过程是一个单向且不可逆的遍历。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年03月16日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1.定义
  • 2.实现(遍历工程员工)
  • 3.总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档