Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
Ao desenvolver um sistema em Java, Eliana decidiu usar os recursos para suporte ao paradigma funcional presentes na plataforma, como no código a seguir, para ordenar a lista.List <String> dados =Arrays.asList("Ana","Luiz","Carlos");dados.sort(expressão funcional);Para que o código de Eliana funcione, a expressão funcional utilizada deverá ser:
Alambda a,b : a>b
B(a,b) => a.compareTo(b)
C(a,b) -> a.equals(b)
Dlambda a,b: strcmp(a,b)
E(a,b) -> a.compareTo(b)
Revelar gabarito e comentário▾
GabaritoE — (a,b) -> a.compareTo(b)
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Lambda expressions em Java para ordenação
Gabarito: letra E. A expressão funcional correta para ordenar uma lista de strings em Java com o método sort() é (a,b) -> a.compareTo(b), pois o método sort espera um Comparator<T> cujo método compare retorna um int (negativo, zero ou positivo). As demais alternativas contêm erros de sintaxe ou semântica.
1Método sort() espera Comparator<T>
2Comparator.compare() retorna int
3String.compareTo() retorna int
4Sintaxe Java: (a,b) -> expressão
5Expressão correta: (a,b) -> a.compareTo(b)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
lambda a,b : a>b não é sintaxe válida em Java; além disso, o operador > não é definido para objetos String. Em Java, a sintaxe correta para lambda é (parâmetros) -> expressão.
Alternativa B — ❌ Incorreta
(a,b) => a.compareTo(b) usa =>, que é a sintaxe de lambda em C# e JavaScript, mas não em Java. Em Java, a seta é ->.
Alternativa C — ❌ Incorreta
(a,b) -> a.equals(b) retorna um boolean, enquanto o método compare espera um int. Portanto, não é compatível com a interface Comparator<String>.
Alternativa D — ❌ Incorreta
lambda a,b: strcmp(a,b) mescla sintaxe de Python (lambda com dois pontos) com função C (strcmp). Não é válido em Java.
Alternativa E — ✅ Correta ⟵ GABARITO
(a,b) -> a.compareTo(b) é a expressão lambda correta: dois parâmetros, -> e uma expressão que retorna int (o método compareTo da classe String). Essa expression implementa a interface funcional Comparator<String> que o método sort exige.
NÃO CAIA NESSA!
A banca tenta confundir com a sintaxe de outras linguagens. Em Java, a seta da lambda é sempre -> (hífen seguido de maior), nunca => (como em C#/JavaScript) nem a palavra lambda (como em Python). Além disso, o método compare deve retornar int; métodos que retornam boolean ou usam operadores relacionais (>, <) não são aceitos diretamente para strings.