1 // IntList.java
2 package local;
3
4 import java.util.Iterator;
5 import java.util.NoSuchElementException;
6
7 /** 8 * IntList verwaltet ganze Zahlen als Liste. 9 * Beispielprogramm zur Programmiertechnik 1, Teil 5. 10 * @author H.Drachenfels 11 * @version 17.7.2024 12 */
13 public final class IntList implements Iterable<Integer> {
14 private Element head;
15
16 /** 17 * Legt eine leere Liste an. 18 */
19 public IntList() {
20 this.head = null;
21 }
22
23 /** 24 * F&uuml;gt eine Zahl am Listenanfang ein. 25 * @param n die einzuf&uuml;gende Zahl 26 * @return die Liste 27 */
28 public IntList insert(int n) {
29 this.head = new Element(this.head, n);
30 return this;
31 }
32
33 /** 34 * Element speichert eine einzelne Zahl als Teil einer Liste. 35 * Beipiel f&uuml;r eine statisch eingebettete Klasse. 36 */
37 private static final class Element {
38 private final Element next;
39 private final int n;
40
41 private Element(Element e, int n) {
42 this.next = e;
43 this.n = n;
44 }
45 }
46
47 @Override
48 public Iterator<Integer> iterator() {
49 // Beispiel fuer eine anonyme lokale Klasse
50 return new Iterator<Integer>() {
51 private Element current = IntList.this.head;
52
53 @Override
54 public boolean hasNext() {
55 return this.current != null;
56 }
57
58 @Override
59 public Integer next() {
60 if (this.current == null) {
61 throw new NoSuchElementException();
62 }
63
64 Element e = this.current;
65 this.current = this.current.next;
66 return Integer.valueOf(e.n);
67 }
68 };
69 }
70 }
71