Java迭代器實(shí)現(xiàn)Python中的range代碼實(shí)例
如果要想迭代一個(gè)類的對(duì)象,那么該類必須實(shí)現(xiàn) Iterable 接口,然后通過(guò) iterator 方法返回一個(gè) Iterator 實(shí)例。
Range 類實(shí)現(xiàn)了Python中的range的所有用法,如:range(10),range(5, 10),range(10, 0, -1),range(0, 10, 2)
如果再在 Range 類中定義靜態(tài)的工廠方法,然后再靜態(tài)導(dǎo)入工廠方法,就可以更方便地使用了。
使用實(shí)例:
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; } }}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. XML入門(mén)精解之結(jié)構(gòu)與語(yǔ)法2. 利用CSS3新特性創(chuàng)建透明邊框三角3. 概述IE和SQL2k開(kāi)發(fā)一個(gè)XML聊天程序4. HTML <!DOCTYPE> 標(biāo)簽5. XML入門(mén)的常見(jiàn)問(wèn)題(二)6. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)7. HTML5 Canvas繪制圖形從入門(mén)到精通8. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera9. HTML DOM setInterval和clearInterval方法案例詳解10. XML入門(mén)的常見(jiàn)問(wèn)題(一)
