Questão nº 33

Questão de Tecnologia da Informação · FGV CVM 2024 (nº 33)

FGV2024Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8)Tecnologia da Informação
Gabarito: Ever comentário ↓

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.

```java
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:

Resposta comentada

Gabarito Alternativa E

Um lambda expression (ou expressão lambda) em Java é uma forma concisa de representar uma função anônima, ideal para implementar interfaces funcionais (interfaces com um único método abstrato), como o Comparator usado para ordenar coleções. O método sort de uma List espera um Comparator que define a lógica de comparação entre dois elementos, retornando um número negativo, zero ou positivo para indicar a ordem.

  • (A) Incorreta: A sintaxe lambda a,b : a>b é do Python, não do Java. Além disso, a>b não é uma comparação válida para objetos String em Java e retornaria um boolean, enquanto o Comparator espera um int.
  • (B) Incorreta: A sintaxe (a,b) => a.compareTo(b) é de funções de seta (arrow functions) do JavaScript, não do Java. Embora a lógica a.compareTo(b) esteja correta para comparar strings, a sintaxe => não é aceita em Java. Armadilha da banca: Esta é a alternativa mais tentadora, pois a lógica de comparação (a.compareTo(b)) está correta e a sintaxe é quase igual à do Java, mas o operador => a torna inválida para Java.
  • (C) Incorreta: Embora (a,b) -> a.equals(b) seja uma sintaxe lambda válida em Java, o método equals retorna um boolean (verdadeiro se os objetos são iguais, falso caso contrário), e o Comparator espera um int para determinar a ordem relativa entre os elementos. Isso resultaria em um erro de compilação e não serviria para ordenar.
  • (D) Incorreta: A sintaxe lambda a,b: strcmp(a,b) é do Python e a função strcmp é comumente associada a C/C++, não existindo diretamente em Java para comparação de strings.
  • (E) Correta: A sintaxe (a,b) -> a.compareTo(b) é a forma correta de uma expressão lambda em Java. Ela recebe dois parâmetros a e b (que serão Strings) e usa o método compareTo da classe String. O String.compareTo(String anotherString) retorna um int negativo se a string atual for lexicograficamente menor que a outra, zero se forem iguais, e um int positivo se for maior. Isso atende perfeitamente à interface funcional Comparator<String> esperada pelo método sort.

Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho