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