Серёжа Болобан
Ученик
(160)
1 год назад
java
Copy code
class ReverseIterator implements Iterator<Integer> {
private ArrayList<Integer> list;
private int index;
public ReverseIterator(ArrayList<Integer> list) {
this.list = list;
this.index = list.size() - 1;
}
public boolean hasNext() {
return index >= 0;
}
public Integer next() {
Integer result = list.get(index);
index--;
return result;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
Чтобы использовать этот итератор, вставьте следующий код внутрь класса A:
java
Copy code
private class ReverseIterable implements Iterable<Integer> {
public Iterator<Integer> iterator() {
return new ReverseIterator(A.this);
}
}
public Iterable<Integer> reverse() {
return new ReverseIterable();
}
Этот код добавляет метод reverse(), который возвращает объект Iterable, созданный из класса ReverseIterable, который в свою очередь возвращает объект ReverseIterator.
Теперь вы можете использовать итератор в обратном порядке, например, так:
java
Copy code
A arr = new A();
arr.add(2); arr.add(1); arr.add(3);
for (Integer k : arr.reverse()) {
System.out.println(k);
}
Это должно вывести на экран:
Copy code
3
1
2
Чтобы, например, код
A arr = new A();
arr.add(2); arr.add(1); arr.add(3);
for (Integer k : arr) {
System.out.println(k);
}
выдал 3 1 2
Василий написал сам класс, но не может написать класс итератора. Помогите ему!
class A extends ArrayList<Integer> {
// YOUR CODE will be placed HERE
// ...
public Iterator<Integer> iterator() {
return new Iter();
}
}
В качестве ответа сдайте только класс итератора.