Fiz um teste de Strings diferente, fora do exercicio com Contas e Clientes, e vi um erro inesperado com o Lambda:
Lambda expression's parameter cannot redeclare another local variable defined in an enclosing scope
public class TesteStringComparator {
public static void main(String[] args) {
String nome1 = "Nair";
String nome2 = "Andre";
String nome3 = "Roberto";
String nome4 = "Maria";
List<String> lista = new ArrayList<>();
lista.add(nome1);
lista.add(nome2);
lista.add(nome3);
lista.add(nome4);
for (String nomes : lista) {
System.out.println(nomes);
}
// !!! AQUI OCORRE O ERRO AO USAR NOME1/NOME2 !!!
// lista.sort((String nome1, String nome2) -> {
// return nome1.compareTo(nome2);
// }
// );
// MUDANDO O PARAMETRO PARA N1/N2 O CODIGO COMPILA
lista.sort((String n1, String n2) -> {
return n1.compareTo(n2);
}
);
System.out.println("------");
for (String nomes : lista) {
System.out.println(nomes);
}
}
}