Pular para o conteúdo principal

Questão de Programação — Java — FGV 2024

ProgramaçãoJava
Código
fg077404
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
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:
  1. Alambda a,b : a>b
  2. B(a,b) => a.compareTo(b)
  3. C(a,b) -> a.equals(b)
  4. Dlambda a,b: strcmp(a,b)
  5. 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.

  1. 1Método sort() espera Comparator<T>
  2. 2Comparator.compare() retorna int
  3. 3String.compareTo() retorna int
  4. 4Sintaxe Java: (a,b) -> expressão
  5. 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.

Gabarito: letra E

Link permanente: /questoes/fg077404