vamos la
a primeira coisa que devemos fazer quando estamos procurando algo é definir como vamos encontrar.
por exemplo, vc tem um .getCpf: isso retorna uma String?
segundo, vc garante que sempre havera 0 ou 1 clientes com este CPF? e se houverem 2? vc quer TODOS ou só o primeiro?
Isso é importante pq List não garante a unicidade.
agora vamos la, o que acontece se vc procurar e não achar ninguem? retorna -1? lança exception? pq 0 é um valor bem… valido pra uma lista. significa o primeiro elemento. se vc inicia uma variavel assim com 0, por padrão ele pode falar que esta la. cuidado.
agora vamos olhar dentro do seu if. se vc quer a posição vc não precisa do indexOf.
indexOf recebe um OBJETO e vai procurar qual a posição daquele objeto. vc ja tem a posição, que é i, como o colega @igomes ja mencionou.
agora… uma vez que vc encontrou, vc quer continuar com o loop? pq isso pode ser inutil, certo? vc ja achou… se for o caso coloca um break; apos guardar a posição no index e isso vai interromper o loop e retornar mais rapido pra vc.
melhor ainda: vc pode colocar um return i; dentro do if.