如果要想迭代一个类的对象,那么该类必须实现 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;
}
}
}

  

使用Java迭代器实现Python中的range的更多相关文章

  1. Python中的range和xrange区别

    range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> r ...

  2. python中的range与xrange

    range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中. class range(stop) class rang ...

  3. Python中的range函数用法

    函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range(0, 5); end:技术到end结束,但 ...

  4. 实验比较python中的range和xrange

    1 结论: 全用xrange,除非你需要使用返回的列表 2 实验一:性能对比 实验环境:win7 ,64位系统 python2.7 import time StartTime=time.time() ...

  5. 模仿python中的range功能

    主要是利用生成器来写的一个函数: def myxrange(start, stop = None, step = 1): #这里的stop一定要等于None,不能等于0,要不然会有好多问题 if st ...

  6. 关于Python中迭代器的作用

    迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...

  7. python开发_python中的range()函数

    python中的range()函数的功能hen强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence o ...

  8. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  9. python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

    Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...

随机推荐

  1. Windows下使用 npm 命令安装 Appium(详)

    本文主要讲述如何在 Windows 系统上通过 npm 命令行安装 appium Windows 桌面版请在官网选择对应版本下载安装. 官网链接 TestHome 百度网盘下载链接 Tips:Appi ...

  2. Web漏洞总结: OWASP Top 10

    本文原创,更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. 开发安全 - OWASP Top 10 在学习安全需要总体了解安全趋势和常见的Web漏洞,首推了解OWASP,因为它代表着业 ...

  3. JUnit 5和Selenium基础(一)

    Gradle.JUnit 5和Jupiter Selenium Selenium是一组支持浏览器自动化的工具,主要用于Web应用程序测试.Selenium的组件之一是Selenium WebDrive ...

  4. 让vue-router渲染为指定的标签

    <router-link :to="{name:'cart'}" tag="li"> cart </router-link> 在rout ...

  5. python 多进程处理图像,充分利用CPU

    默认情况下,Python程序使用一个CPU以单个进程运行.不过如果你是在最近几年配置的电脑,通常都是四核处理器,也就是有8个CPU.这就意味着在你苦苦等待Python脚本完成数据处理工作时,你的电脑其 ...

  6. TensorFlow——批量归一化操作

    批量归一化 在对神经网络的优化方法中,有一种使用十分广泛的方法——批量归一化,使得神经网络的识别准确度得到了极大的提升. 在网络的前向计算过程中,当输出的数据不再同一分布时,可能会使得loss的值非常 ...

  7. C# 中 ConfigureAwait 相关答疑FAQ

    C# 中 ConfigureAwait 相关答疑FAQ 在前段时间经常看到园子里有一些文章讨论到 ConfigureAwait,刚好今天在微软官方博客看到了 Stephen Toub 前不久的一篇答疑 ...

  8. java 方法定义 调用

    一.定义 格式: 修饰符 返回值类型 方法名(参数){ return } 相比之下python方法的定义简单多了 public static 是修饰符 二.调用 方法名(); 注意:要在main方法中 ...

  9. Flask路由+视图补充

    一.路由设置的两种方法 1.装饰器 @app.route('/index/') def index(): return 'Hello World!' 2.源码 route->decorator- ...

  10. HashMap在JDK7和JDK8中的区别

    在[深入浅出集合Map]中,已讲述了HashMap在jdk7中实现,在此就不再细说了 JDK7中的HashMap 基于链表+数组实现,底层维护一个Entry数组 Entry<K,V>[]  ...