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;
            }
        }
    }
    

      

  • 相关阅读:
    Dolby pro logic introduction
    3.8 Language Support(audio)
    what is dual mono
    会计misc
    除权除息
    MPEG2-TS音视频同步原理(PCR dts pts)
    计算视频文件(包含PCR)播放带宽的方法 PCR计算码率
    cocos2d 动作切换
    cocos2d 播放音乐
    cocos2d 主角更随触屏走
  • 原文地址:https://www.cnblogs.com/yuanyb/p/11967938.html
Copyright © 2011-2022 走看看