اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.
تحتوي Java على واجهة Iterator .
مثال بسيط يوضح كيفية إرجاع الأعداد الصحيحة بين البداية والنهاية [start، end] باستخدام المكرر Iterator
import java.util.Iterator; import java.util.NoSuchElementException; public class RangeIteratorExample { public static Iterator<Integer> range(int start, int end) { return new Iterator<>() { private int index = start; @Override public boolean hasNext() { return index < end; } @Override public Integer next() { if (!hasNext()) { throw new NoSuchElementException(); } return index++; } }; } public static void main(String[] args) { var iterator = range(0, 10); while (iterator.hasNext()) { System.out.println(iterator.next()); } // or using a lambda iterator.forEachRemaining(System.out::println); } }
بدءأ من Java 5 ، يمكن النفاذ إلى الكائنات التي تقوم بتنفيذ واجهة (يمكن تكريره) Iterable ، والتي تُرجع (المكرر) Iterator من طريقت</>ها الوحيدة، باستخدام البناء النحوي للحلقة foreach في جافا. تمتد واجهة (التجميعات) Collection من جافا Java collections framework</>إلى Iterable . مثال على تنفيذ صنف Family للواجهة Iterable :
import java.util.Iterator; import java.util.Set; class Family<E> implements Iterable<E> { private final Set<E> elements; public Family(Set<E> elements) { this.elements = Set.copyOf(elements); } @Override public Iterator<E> iterator() { return elements.iterator(); } }
يوضح الصنف ("مثال-يمكن-تكريره") IterableExample استخدام الصنف "عائلة" Family :
public class IterableExample { public static void main(String[] args) { var weasleys = Set.of( "Arthur", "Molly", "Bill", "Charlie", "Percy", "Fred", "George", "Ron", "Ginny" ); var family = new Family<>(weasleys); for (var name : family) { System.out.println(name + " Weasley"); } } }
مخرجات:
Ron Weasley Molly Weasley Percy Weasley Fred Weasley Charlie Weasley George Weasley Arthur Weasley Ginny Weasley Bill Weasley