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);}/* 输出:10987654321*/
代码:
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; } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. 在IDEA中实现同时运行2个相同的java程序2. docker /var/lib/docker/aufs/mnt 目录清理方法3. Vuex localStorage的具体使用4. python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例5. Docker究竟是什么 为什么这么流行 它的优点和缺陷有哪些?6. python+excel接口自动化获取token并作为请求参数进行传参操作7. 基于Python制作一副扑克牌过程详解8. 《CSS3实战》笔记--渐变设计(三)9. ASP.NET泛型三之使用协变和逆变实现类型转换10. Python matplotlib画图时图例说明(legend)放到图像外侧详解

网公网安备