Ois,
João, muito obrigado por compartilhar a sua dúvida!
O unit test abaixo é apenas um exemplo do que Felipe explicou.
import java.util.Iterator; // para criarmos um iterador import edu.princeton.cs.algs4.StdOut; public class Cliente { public static void main(String[] args) { String s = args[0]; Arrangements arr = new Arrangements(s); StdOut.println("Teste 1: imprime no máximo os 5 primeiros arranjos; usa iterador t1"); Iterator<String> it1 = arr.iterator(); int i1 = 0; // contador para o iterador it1 while (it1.hasNext() && i1 < 5) { StdOut.println(i1 + " : " + it1.next()); i1++; } StdOut.println("Teste 2: imprime no máximo os 3 primeiros arranjos; usa iterador t2"); Iterator<String> it2 = arr.iterator(); int i2 = 0; // contado para o iterador it2 while (it2.hasNext() && i2 < 3) { StdOut.println(i2 + " : " + it2.next()); i2++; } StdOut.println("Teste 3: imprime todos os arranjos; usa iterador do 'for each'"); int i = 0; for (String arranjo: arr) { // o iterador está implicito StdOut.println(i + " : " + arranjo); i++; } StdOut.println("Teste 4: imprime todos os arranjos restante usando o it1"); while (it1.hasNext()) { StdOut.println(i1 + " : " + it1.next()); i1++; } StdOut.println("Teste 4: imprime todos os arranjos restante usando o it2"); while (it2.hasNext()) { StdOut.println(i2 + " : " + it2.next()); i2++; } } }
% java Cliente ABCa Teste 1: imprime no máximo os 5 primeiros arranjos; usa iterador t1 0 : ABCa 1 : ABaC 2 : ACBa 3 : ACaB 4 : AaBC Teste 2: imprime no máximo os 3 primeiros arranjos; usa iterador t2 0 : ABCa 1 : ABaC 2 : ACBa Teste 3: imprime todos os arranjos; usa iterador do 'for each' 0 : ABCa 1 : ABaC 2 : ACBa 3 : ACaB 4 : AaBC 5 : AaCB 6 : BACa 7 : BAaC 8 : BCAa 9 : BCaA 10 : BaAC 11 : BaCA 12 : CABa 13 : CAaB 14 : CBAa 15 : CBaA 16 : CaAB 17 : CaBA 18 : aABC 19 : aACB 20 : aBAC 21 : aBCA 22 : aCAB 23 : aCBA Teste 4: imprime todos os arranjos restante usando o it1 5 : AaCB 6 : BACa 7 : BAaC 8 : BCAa 9 : BCaA 10 : BaAC 11 : BaCA 12 : CABa 13 : CAaB 14 : CBAa 15 : CBaA 16 : CaAB 17 : CaBA 18 : aABC 19 : aACB 20 : aBAC 21 : aBCA 22 : aCAB 23 : aCBA Teste 4: imprime todos os arranjos restante usando o it2 3 : ACaB 4 : AaBC 5 : AaCB 6 : BACa 7 : BAaC 8 : BCAa 9 : BCaA 10 : BaAC 11 : BaCA 12 : CABa 13 : CAaB 14 : CBAa 15 : CBaA 16 : CaAB 17 : CaBA 18 : aABC 19 : aACB 20 : aBAC 21 : aBCA 22 : aCAB 23 : aCBA