package org.wikiup.core.impl.iterable;

import java.util.Iterator;
import java.util.List;

public class ReversedIterable<E> implements Iterable<E> {
    private List<E> iterable;

    public ReversedIterable(List<E> iterable) {
        this.iterable = iterable;
    }

    public Iterator<E> iterator() {
        return new ReversedIterator();
    }

    private class ReversedIterator implements Iterator<E> {
        private int index = iterable.size();

        public boolean hasNext() {
            return index > 0;
        }

        public E next() {
            return iterable.get(--index);
        }

        public void remove() {
            iterable.remove(--index);
        }
    }
}

@@ -86,16 +86,48 @@
 l.List;%0D
+%0Aimport java.util.ListIterator;%0D
 %0A%0D%0Apubli
@@ -151,17 +151,17 @@
 terable%3C
-E
+T
 %3E implem
@@ -174,17 +174,17 @@
 terable%3C
-E
+T
 %3E %7B%0D%0A   
@@ -197,27 +197,23 @@
 te List%3C
-E%3E iterable
+T%3E list
 ;%0D%0A%0D%0A   
@@ -246,19 +246,15 @@
 ist%3C
-E%3E iterable
+T%3E list
 ) %7B%0D
@@ -271,27 +271,19 @@
 his.
-iterable = iterable
+list = list
 ;%0D%0A 
@@ -310,17 +310,17 @@
 terator%3C
-E
+T
 %3E iterat
@@ -362,17 +362,50 @@
 Iterator
-(
+%3CT%3E(list.listIterator(list.size())
 );%0D%0A    
@@ -421,16 +421,23 @@
 private 
+static 
 class Re
@@ -450,16 +450,19 @@
 Iterator
+%3CT%3E
  impleme
@@ -474,17 +474,17 @@
 terator%3C
-E
+T
 %3E %7B%0D%0A   
@@ -500,38 +500,172 @@
 ate 
-int index = iterable.size();%0D%0A
+ListIterator%3CT%3E listIterator;%0D%0A%0D%0A        public ReversedIterator(ListIterator%3CT%3E listIterator) %7B%0D%0A            this.listIterator = listIterator;%0D%0A        %7D%0D%0A        
 %0D%0A  
@@ -721,17 +721,34 @@
 urn 
-index %3E 0
+listIterator.hasPrevious()
 ;%0D%0A 
@@ -778,9 +778,9 @@
 lic 
-E
+T
  nex
@@ -809,28 +809,30 @@
 urn 
-iterable.get(--index
+listIterator.previous(
 );%0D%0A
@@ -892,24 +892,28 @@
     
-i
+listI
 tera
-ble
+tor
 .remove(
 --in
@@ -912,15 +912,8 @@
 ove(
---index
 );%0D%0A

use ListIterator to implement reversed iterator