Iterator

Status
Nicht offen für weitere Antworten.

mirjam

Mitglied
Hallo,

folgende Übungsaufgabe zum Thema "Iterator" würde ich gerne lösen:

"Implementiere eine Klasse Wochentag, die die Schnittstelle java.util.Iterator implementiert. Dabei soll es für die Klasse 7 Konstanten für die Wochentage geben, die Objekte vom Typ Wochentag sind. Ein Konstruktor soll auf einen Wochentag initialisieren können und dies mit einer Zahl von 0 bis 7. Nutze folgendes Implementierungsschema:

class Wochentag implements Iterator
{
Wochentag MONTAG = new Wochentag(1);
// ...
}

Mit der Methode next() des Iterators soll man dann das nächste Wochentag-Objekt bekommen. "


So ganz verstehe ich dieses Aufgabe allerdings nicht. Mir ist jedoch nicht so recht klar, wie denn dann der Code, um dies aufzurufen im main aussehen soll. Versteht ihr diese Aufgabe und könnt mir Beispiele für den Code im main nennen?
 

ARadauer

Top Contributor
Java:
class Wochentag implements Iterator
{
Wochentag MONTAG = new Wochentag(1);
// ...
}
das kommt vom Lehrer, ehrlich?

Java:
class Wochentag implements Iterator{
    
   public final static int MONTAG = 1;
erscheint mehr eher sinnvoll..
 

Der Müde Joe

Top Contributor
>das kommt vom Lehrer, ehrlich?

Der will doch einfach ne primitive Enum mit nem StatePattern in der Art:
Java:
import java.util.Iterator;


public class Weekday implements Iterator<Weekday> {

	private static final Weekday MONDAY = new Weekday();
	private static final Weekday TUESDAY = new Weekday();
	// ...
	
	private Weekday() {
	}

	@Override
	public boolean hasNext() {
		return false;
	}

	@Override
	public Weekday next() {
		return null;
	}

	@Override
	public void remove() {
	}
}
 

mirjam

Mitglied
>das kommt vom Lehrer, ehrlich?

;) Um die Frage mit dem Lehrer zu klären: Diese Aufgabe habe ich von Christian Ullenboom, der berühmte Autor von "Java ist auch eine Insel". Allerdings habe ich noch die Aufgabenversion von CD von der 6. Auflage. In der aktuellen hat er teilweise völlig andere Aufgaben. Vielleicht hat er diese rausgenommen, weil er zu viele Anfragen deswegen erhalten hat?! Obwohl sie sich auf den ersten Blick doch eigentlich ganz nett anhört.

Wenn's von nem Lehrer gewesen wäre, hätte ich einfach gedacht, der Lehrer ist zu doof um Aufgaben zu stellen. So dachte ich, dass ich vielleicht zu doof bin, die Aufgabe zu verstehen.
 
Zuletzt bearbeitet:
M

maki

Gast
Seit Java 5 gibt es Enums, diese sollten anstatt Integer Konstanten verwendet werden, deswegen macht die Aufgabenstellung in dieser Form heute keinen Sinn mehr bzw. führt dazu, das man sich für die schlchtere Lösung (int Konstanten) anstatt für die gute Lösung (enums) entscheidet.
 

Der Müde Joe

Top Contributor
>Vielleicht hat er diese rausgenommen, weil er zu viele Anfragen deswegen erhalten hat?

Ja. Mich würde die remove-Methode vom Iterator sehr interessiern auf einen Wochentag. So in der Art: Die stehlen Tage ;-)
 
M

maki

Gast
>Vielleicht hat er diese rausgenommen, weil er zu viele Anfragen deswegen erhalten hat?

Ja. Mich würde die remove-Methode vom Iterator sehr interessiern auf einen Wochentag. So in der Art: Die stehlen Tage ;-)

Java:
public void remove() {
    throw new UnsupportedOperationException();
}
remove ist optional ;)
 

Der Müde Joe

Top Contributor
>War nötig im Collections Framework, gibt es öfters.

Ich weiss. habs leider auch schon einsetzten müssen. gefällt mir trotzdem nicht.

Back to Topic:
Woran scheiters du?
 

ARadauer

Top Contributor
@Override
public boolean hasNext() {
return false;
}

@Override
public Weekday next() {
return null;
}

@Override
public void remove() {
}
warum soll ich das Interface implemtieren, wenn es dann eh nix kann ;-)

ich denke next von Montag soll Dienstag liefern.. nur wie? Soll ein neues Objekt erstell werden, ein interner counter incrementiert werden um this zurück zu liefern?
 

Der Müde Joe

Top Contributor
dachte so:
Java:
import java.util.Iterator;


public class Weekday implements Iterator<Weekday> {

	public static final Weekday MONDAY = new Weekday(1);
	public static final Weekday TUESDAY = new Weekday(2);
	public static final Weekday WEDNESDAY = new Weekday(3);
	public static final Weekday THURSDAY = new Weekday(4);
	public static final Weekday FRIDAY = new Weekday(5);
	public static final Weekday SATURDAY = new Weekday(6);
	public static final Weekday SUNDAY = new Weekday(7);

	private int day;

	private Weekday(int day) {
		this.day = day;
	}

	@Override
	public boolean hasNext() {
		// bis ans Ende der Zeit
		return true;
	}

	@Override
	public Weekday next() {
		int tomorow = this.day+1;
		if (tomorow == 8) {
			tomorow = 1;
		}
		switch (tomorow) {
			case 1:
				return MONDAY;
			case 2:
				return TUESDAY;
			case 3:
				return WEDNESDAY;
			case 4:
				return THURSDAY;
			case 5:
				return FRIDAY;
			case 6:
				return SATURDAY;
			case 7:
				return SUNDAY;
		}
		throw new RuntimeException("BIG RIP");
	}

	@Override
	public String toString() {
		return day + "";
	}

	@Override
	public void remove() {
		throw new UnsupportedOperationException("Thief");
	}

	public static void main(String... args) throws InterruptedException {
		Weekday weekday = MONDAY;
		while (weekday.hasNext()) {
			System.out.println(weekday);
			weekday = weekday.next();
			Thread.sleep(500);
		}
	}
}
 
G

Gast2

Gast
Java:
throw new UnsupportedOperationException("Dawdler");
;)
 

mirjam

Mitglied
Vielen Dank für Eure vielen Antworten.
Ich denk mal der Code vom Müden Joe ist wohl in etwa das, was der Aufgabensteller sich gedacht hat.
Die Aufgabenstellungen war mir nicht so ganz klar, aber nun bin ich beruhigt: Ich bin wohl nicht die einzige, der's so geht.
 

0x7F800000

Top Contributor
Sehr merkwürdige Aufgabe... ???:L
So merkwürdig, dass selbst Der Müde Joe kurzfristig die Grundlagen der prozeduralen programmierung vergessen hat... :bahnhof: Kann man ihm nicht verübeln in diesem Fall, irgendwas sinnvolleres, was der aufgabenstellung exakt entspricht, kriegt man da nicht ohne weiteres hin.

Ergibt's so evtl. etwas mehr sinn?
Java:
enum Weekday{
	MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY	
}
Java:
import java.util.Arrays;
import java.util.Iterator;

public class WeekdayIterator implements Iterator<Weekday> {

	private int currentDay;
	public WeekdayIterator(Weekday start){
		currentDay=Arrays.binarySearch(Weekday.values(), start);
	}
	@Override
	public boolean hasNext() {
		return true;
	}

	@Override
	public Weekday next() {
		Weekday day=Weekday.values()[currentDay];
		currentDay=(currentDay+1)%Weekday.values().length;
		return day;
	}

	@Override
	public void remove() {
		throw new UnsupportedOperationException("there are funnier ways to kill time");
	}
	
	public static void main(String..._){
		WeekdayIterator it=new WeekdayIterator(Weekday.WEDNESDAY);
		for(int i=0; i<10; i++){
			System.out.println(it.next());
		}
	}
}
:autsch:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
N Warum Springt iterator nur in der Schleife weiter Java Basics - Anfänger-Themen 9
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
J Methoden iterator for-schleife (hasNext() ) Java Basics - Anfänger-Themen 7
Stargirlxo Iterator + Methode Java Basics - Anfänger-Themen 10
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Iterator erneut! Java Basics - Anfänger-Themen 8
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
K Iterator zurückliefern Java Basics - Anfänger-Themen 8
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
S Iterator einer Liste Java Basics - Anfänger-Themen 4
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
I Erste Schritte Iterator Java Basics - Anfänger-Themen 3
M Iterator funktioniert nicht Java Basics - Anfänger-Themen 5
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
O Interface Iterator Java Basics - Anfänger-Themen 2
M Collections Frage Beispielprogrammierung Iterator Java Basics - Anfänger-Themen 13
M Iterator Java Basics - Anfänger-Themen 25
J Iterator Funktioniert nicht richtig in StackImplementierung Java Basics - Anfänger-Themen 3
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
L Iterator Java Basics - Anfänger-Themen 1
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
OnDemand Iterator Interfacve Java Basics - Anfänger-Themen 23
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
T Methoden Iterator über ArrayList Java Basics - Anfänger-Themen 3
W Iterator Java Basics - Anfänger-Themen 2
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P Casting Warning bei Iterator Java Basics - Anfänger-Themen 32
F Wie Werte einer ArrayList an einen 'Custom'-Iterator übergeben? Java Basics - Anfänger-Themen 2
J Iterator Java Basics - Anfänger-Themen 5
P ArrayList mit Iterator / Iterable ausgeben Java Basics - Anfänger-Themen 8
B Funktionsweise Iterator unklar Java Basics - Anfänger-Themen 7
A Datentypen Iterator von hinten nach vorne durchlaufen Java Basics - Anfänger-Themen 4
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
D Iterator schaltet nicht weiter?! Java Basics - Anfänger-Themen 5
A Problem mit Iterator Java Basics - Anfänger-Themen 2
B Türme von Hanoi - Iterator Java Basics - Anfänger-Themen 50
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
W Collections Iterator<E> Java Basics - Anfänger-Themen 7
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
W OOP problem mit iterator! -.- Java Basics - Anfänger-Themen 9
B Iterator und Collection Java Basics - Anfänger-Themen 11
ruutaiokwu Iterator oder .size ??? Java Basics - Anfänger-Themen 6
vandread Iterator zählt nicht hoch?! Java Basics - Anfänger-Themen 3
L Problem mit Iterator bzw. Sortierte Liste Java Basics - Anfänger-Themen 14
N HashMap mit Iterator durchlaufen Java Basics - Anfänger-Themen 11
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
J Verschachtelte for-Schleife mit Löschen von Iterationen. Wie über Iterator abbilden? Java Basics - Anfänger-Themen 6
L Implementation gesucht - ArrayList.iterator() Java Basics - Anfänger-Themen 3
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
pun Iterator über ArrayList Java Basics - Anfänger-Themen 12
P Iterator.add() Java Basics - Anfänger-Themen 3
A For Schleife - Iterator wird null Java Basics - Anfänger-Themen 7
? Map und iterator Java Basics - Anfänger-Themen 11
0x7F800000 ungereimtheiten mit Iterator/ListIterator Java Basics - Anfänger-Themen 2
N "Dynamischer" Iterator Java Basics - Anfänger-Themen 21
J Iterator remove()? Java Basics - Anfänger-Themen 5
T Liste mit Iterator auslesen Java Basics - Anfänger-Themen 11
Kr0e Iterator Java Basics - Anfänger-Themen 2
D iterator instanziieren! Java Basics - Anfänger-Themen 11
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
J ArrayList mit Iterator Java Basics - Anfänger-Themen 3
W Iterator in Queue Java Basics - Anfänger-Themen 5
A Für was Iterator ? Java Basics - Anfänger-Themen 3
M warum interface iterator verwendbar? Java Basics - Anfänger-Themen 5
O Iterator - Durchlauf "einschränken" bzw. steuern&q Java Basics - Anfänger-Themen 2
K Collection und Iterator Java Basics - Anfänger-Themen 7
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
S iterator problem Java Basics - Anfänger-Themen 3
S Iterator --__-- Zugriff auf nächstes Element Java Basics - Anfänger-Themen 5
N Set + Iterator oder doch nur zu blöd API zu lesen Java Basics - Anfänger-Themen 32
R Java 5.0 neue For schleife Iterator was ist der fehler? Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
R Iterator und HashMap Java Basics - Anfänger-Themen 10
G Probleme mit Iterator Java Basics - Anfänger-Themen 2
E umgededrehte if anweisung funzt nicht , iterator. Java Basics - Anfänger-Themen 2
A Iterator, wie funkioniert das richtig? Java Basics - Anfänger-Themen 6
S Iterator Schreibweise Java Basics - Anfänger-Themen 7
P ArrayList, iterator: Fehler in while Schleife Java Basics - Anfänger-Themen 2
T Iterator Java Basics - Anfänger-Themen 8
G Frage zur Iterator ? Java Basics - Anfänger-Themen 12
A Iterator auf anfang setzen Java Basics - Anfänger-Themen 5
blackfeet Bildfadeffekt (Halptransparenz) & iterator Java Basics - Anfänger-Themen 8
C Problem mit verschachteltem Iterator Java Basics - Anfänger-Themen 2
R Problem mit Iterator Java Basics - Anfänger-Themen 6
M Problem mit Iterator.remove() Java Basics - Anfänger-Themen 5
R Enumeration oder Iterator? Java Basics - Anfänger-Themen 2
J Klasse Iterator Java Basics - Anfänger-Themen 5
D unregelmäßige NullPointerException bei LinkedList Iterator? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben