// containers/MultiIterableClass.java // ©2016 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://mindviewinc.com/Books/OnJava/ for more book information. // Adding several Adapter Methods. import java.util.*; public class MultiIterableClass extends IterableClass { public Iterable reversed() { 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 () -> { 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. */