Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
public Iterator iterator() {
return new Iterator() {
int index = 0;
@Override
public boolean hasNext() {
return index < werte.length;
}
@Override
public Object next() {
return werte[index++];
}
@Override
public void remove() {
werte[index] = null; // besser wäre das array zu verkleinern
}
};
}
Anmerkung: am besten du machst die Klasse generisch
Falls du das meinst was ich denke dass du es meinst: Nein!
du siehst nach dem Konstruktorenaufruf eine {
und vor dem ende ein };
d.h. das interface wurde als sogenannte anonyme innerclass umgesetzt.
Was bedeutet das? Der Code oben ist eine Klasse, die in einer Methode definiert wurde
Es wurde mir geraten den Iterator generisch zu machen...
in diesem fall ist das nicht möglich da der iterator auf das Objectarray fixiert ist
wenn ich für den iterator eine eigene klasse schreibe und das Object als attribut übergebe kann ich
1. verschiedene Objecte nehmen und nicht nur das objectarray im Vecort // new Iterator(Objectarray);
2. den Iterator allgemein aufrufen und nicht mit v.iterator()
mach nicht nur den Iterator generisch, sondern die ganze klasse
in etwa so
Java:
package de.test;
import java.util.Iterator;
public class Vector<E> {
private int index = 0;
private Object[] values;
public Vector( int size ) {
values = new Object[size];
}
public int size() {
return index;
}
public int capacity() {
return values.length;
}
public void put( E value ) {
values[index] = value; // eventuell Exception
index++;
}
@SuppressWarnings( "unchecked" )
public E get( int index ) {
return (E) values[index]; // eventuell Exception
}
public Iterator<E> iterator() {
return new Iterator<E>() {
int index = 0;
@Override
public boolean hasNext() {
return index < values.length;
}
@Override
@SuppressWarnings( "unchecked" )
public E next() {
return (E) values[index++];
}
@Override
public void remove() {
values[index] = null; // besser wäre das array zu verkleinern
}
};
}
public static void main( String[] args ) {
Vector<Integer> vector = new Vector<Integer>(3);
vector.put(10);
vector.put(20);
vector.put(30);
Iterator<Integer> iterator = vector.iterator();
while ( iterator.hasNext() ) {
System.out.println(iterator.next());
}
}
}