Пользовательский Java Iterator с путаницей типов
У меня есть универсальный класс, который связывает объект и порядок:
public class OrderedObject {
private int order;
private T object;
public OrderedObject(int order, T object) {
this.order = order;
this.object = object;
}
public int getOrder() {
return order;
}
public T getObject() {
return object;
}
}
Я разработалSet
реализация, которая хранитOrderedObject
случаи и хочет произвестиIterator
перечисление в порядке, установленном встроенным порядком:
public class OrderedObjectSet extends AbstractSet implements Set {
Set s = new HashSet();
public boolean add(int order, T object) {
return s.add(new OrderedObject(order, object));
}
public Iterator iterator() {
return new OrderedObjectSetIterator();
}
public int size() {
return s.size();
}
private class OrderedObjectSetIterator implements Iterator {
private int index;
public boolean hasNext() {
return index < s.size();
}
public T next() {
T object = null;
for (Iterator it = s.iterator(); it.hasNext(); ) {
OrderedObject o = it.next();
if (o.getOrder() == index) {
object = o.getObject();
}
}
index++;
return object;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
Последний класс не компилируется, потому что кажется, что вIterator
инициализация в
for (Iterator it = s.iterator(); it.hasNext(); ) {
Что я пропускаю?