zoukankan      html  css  js  c++  java
  • 使用Java迭代器实现Python中的range

    如果要想迭代一个类的对象,那么该类必须实现 Iterable 接口,然后通过 iterator 方法返回一个 Iterator 实例。

    Range 类实现了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2)

    如果再在 Range 类中定义静态的工厂方法,然后再静态导入工厂方法,就可以更方便地使用了。

    使用实例:

    for (int x : new Range(10, 0, -1)) {
        System.out.println(x);
    }
    /* 输出:
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    */
    

      

    代码:

    class Range implements Iterable<Integer> {
        private final int start;
        private final int end;
        private final int step;
    
        public Range(int end) {
            this(0, end, 1);
        }
    
        public Range(int start, int end) {
            this(start, end, 1);
        }
    
        public Range(int start, int end, int step) {
            this.start = start;
            this.end = end;
            this.step = step;
        }
    
        @Override
        public Iterator<Integer> iterator() {
            return new Itr();
        }
        private class Itr implements Iterator<Integer> {
            int current = start;
            @Override
            public boolean hasNext() {
                return step > 0 ? current < end : current > end;
            }
    
            @Override
            public Integer next() {
                int t = current;
                current += step;
                return t;
            }
        }
    }
    

      

  • 相关阅读:
    思考的容器:结构
    思维的结构-结构是思维的组织形式-系统思维
    分层 抽象 复杂 认知
    NoSQL 简介
    什么是数据库ACID?
    sqlite3 多线程和锁 ,优化插入速度及性能优化
    Architecture of SQLite
    关系模型我的理解
    科学理论--抽象
    认识的三个层次
  • 原文地址:https://www.cnblogs.com/yuanyb/p/11967938.html
Copyright © 2011-2022 走看看