zoukankan      html  css  js  c++  java
  • 设计模式(11)迭代器模式

    迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

    下面我们利用java自带的迭代器接口实现这个迭代器模式

    首先我们定义一个自定义的集合类,并实现它的迭代器

    public class Book {
    
        public Book(String name, Double price) {
            this.name = name;
            this.price = price;
        }
    
        /**
         * 名称
         */
        private String name;
        /**
         * 价格
         */
        private Double price;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Double getPrice() {
            return price;
        }
    
        public void setPrice(Double price) {
            this.price = price;
        }
    }
    public class MyCollection {
    
        private List<Book> dataList = new ArrayList<>();
    
        public void add(Book data) {
            dataList.add(data);
        }
    
        public void remove(Book data) {
            dataList.remove(data);
        }
    
        public MyIterator getIterator() {
            return new MyIterator(this.dataList);
        }
    }
    public class MyIterator implements Iterator<Book> {
    
        private List<Book> dataList;
    
        private int index;
    
        public MyIterator(List<Book> dataList) {
            this.dataList = dataList;
            index = 0;
        }
    
        @Override
        public boolean hasNext() {
            return index < dataList.size();
        }
    
        @Override
        public Book next() {
            return dataList.get(index++);
        }
    }

    测试

    public static void main(String[] args) {
            MyCollection collection = new MyCollection();
            collection.add(new Book("SQL从删库到跑路",66.6));
            collection.add(new Book("JAVA从入门到放弃",88.8));
    
            MyIterator iterator = collection.getIterator();
            while (iterator.hasNext()) {
                Book book = iterator.next();
                System.out.println("书名:"+ book.getName() + ",售价:" + book.getPrice());
            }
        }

    结果

  • 相关阅读:
    Zookeeper 选举机制
    Hadoop Yarn任务调度器
    Hadoop Yarn工作机制 Job提交流程
    Hadoop 切片机制
    Hadoop MapReduce工作流程
    Hadoop HDFS读写数据流程
    数据仓库 拉链表
    高动态范围照片*5
    Java实现的窗口计算器
    拍摄制作星轨拖尾视频 之 前期拍摄
  • 原文地址:https://www.cnblogs.com/oeleven/p/10640123.html
Copyright © 2011-2022 走看看