// collections/MultiIterableClass.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. // Adding several Adapter Methods import java.util.*; public class MultiIterableClass extends IterableClass { public Iterable reversed() { return new Iterable() { public Iterator iterator() { return new Iterator() { int current = words.length - 1; @Override public boolean hasNext() { return current > -1; } @Override public String next() { return words[current--]; } @Override public void remove() { // Not implemented throw new UnsupportedOperationException(); } }; } }; } public Iterable randomized() { return new Iterable() { public Iterator iterator() { List shuffled = new ArrayList(Arrays.asList(words)); Collections.shuffle(shuffled, new Random(47)); return shuffled.iterator(); } }; } public static void main(String[] args) { MultiIterableClass mic = new MultiIterableClass(); for(String s : mic.reversed()) System.out.print(s + " "); System.out.println(); for(String s : mic.randomized()) System.out.print(s + " "); System.out.println(); for(String s : mic) System.out.print(s + " "); } } /* Output: banana-shaped. be to Earth the know we how is that And is banana-shaped. Earth that how the be And we know to And that is how we know the Earth to be banana-shaped. */