Esse post contêm duvidas sobre o método shuffle e como poderia criar um método próprio de embaralhamento e também contêm minha conclusão sobre o desafio.
1º Método reverse:
Collections.reverse(lista);
2º Método shuffle:
Collections.shuffle(lista);
Sobre o método shuffle como eu poderia definir um critério de embaralhamento? Já tentei fazer como o método/interface Comparator e não obtive sucesso.
3º Método rotate:
Collections.rotate(lista, pos);
Sobre esse método fiz algumas observações e gostaria de confirmar se estou certo.
1º Quando se utiliza números positivos na posição a contagem começa do ultimo elemento para o primeiro, invertendo assim a ordem de saída de todos os elementos subsequentes. EXEMPLO:
Entrada:
List<Conta> lista = new ArrayList<>();
lista.add(cc1);
lista.add(cc2);
lista.add(cc3);
lista.add(cc4);
lista.add(cc5);
for (Conta conta : lista) {
System.out.println(conta + ", " + conta.getTitular().getNome());
}
Saída:
cc1
cc2
cc3
cc4
cc5
Entrada:
// Repetindo o código da primeira entrada
Collections.rotate(lista, 2);
Saída:
cc4 // O 2º elemento contando a partir do ultimo
cc5
cc1
cc2
cc3
2º Caso o número utilizado no lugar do pos seja negativo, o efeito é contrário, começando a contagem do primeiro elemento(0, o 0 é o mesmo que a lista padrão) e assim por diante. EXEMPLO:
Entrada:
// Mesma entrada do primeiro exemplo
Collections.rotate(lista, -2);
Saída:
cc2
cc3
cc4
cc5
cc1
A postagem ficou um tanto extensa, mas espero que tenha sido clara.
Resumindo, gostaria de saber como criar meu método de embaralhamento e se as conclusões que tirei sobre o método rotate estão corretas.
Obrigado :)