import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.ArrayList;
import java.util.Arrays;
import static java.util.Arrays.asList;
//asList is a static method in Arrays so it can be imported 
//without specifying the class in which the method is defined.
//Java Docs Arrays

public class ListIterators {
    public static void main(String[] args){
        List<String> list = new ArrayList<String>( Arrays.asList("a", "b", "c"));
       // List<int> list1=new ArrayList<int>( Arrays.asList(1, 2, 3));
        //Error unexpected type.
        list.add("d");
        list.add("e");
        list.add("f");
        List<String> list1 = asList("a1", "a2", "a3");

        for ( String st :list1) {
            System.out.println(st);
        }
        System.out.println("////////////////");

        ListIterator<String> listIterator = list.listIterator(list.size());
        while (listIterator.hasPrevious()) {
            System.out.println(listIterator.previous());
        }
        System.out.println("////////////////");
        listIterator = list.listIterator(3);
        while (listIterator.hasPrevious()) {
            System.out.println(listIterator.previous());
        }
        System.out.println("////////////////");

        listIterator = list.listIterator(3);
        while (listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }

    }


}


The Output a1 a2 a3 //////////////// f e d c b a //////////////// c b a //////////////// d e f