-
Notifications
You must be signed in to change notification settings - Fork 235
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Duvida desafio 7 #3
Comments
|
Fiz assim. Tive que usar um recurso de optional, mesmo não assistindo o vídeo sobre essa parte ainda. Mas acho que ficou mais dinâmico, visto que você pode adicionar números na lista depois e o código ainda assim retornar o resultado correto. |
Boa tarde, @thiagovanzele. Parabéns pelos estudos, viu? Está indo bem! Deixa eu te mostrar uma forma de fazer. Lembrando que existem outras formas:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
Integer segundoNumero = numeros.stream()
.distinct() // Remove elementos repetidos
.sorted(Comparator.reverseOrder()) // Ordena os números na ordem decrescente
.skip(1) // Pula o primeiro número
.findFirst() // Encontra o primeiro elemento após o pulo
.orElse(null); // Se não encontrar, retorna null Se ficou alguma dúvida, me avisa que fazemos de outras formas. (: |
Parabéns pela resposta, @siqueirarxd. Muito bom! (: Não sei se você conhece, mas você também poderia utilizar o método Exemplo de solução: List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);
Integer segundoNumero = numeros.stream()
.distinct() // Remove elementos repetidos
.sorted(Comparator.reverseOrder()) // Ordena os números na ordem decrescente
.skip(1) // Pula o primeiro número
.findFirst() // Encontra o primeiro elemento após o pulo
.orElseThrow(() -> new NoSuchElementException("Não existe segundo maior número.")); Bons estudos para nós! |
Outra maneira de resolver seria ordenando o array de forma crescente e pegando o penúltimo elemento, consequentemente o segundo mais alto. Utilizando também o
|
Massa, @willianac. |
Olha como ficou o meu... public class Desafio7 {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 5, 4, 10);
Optional<Integer> primeiroMaior = numeros.stream().max(Integer::compareTo);
Integer x = numeros.stream().reduce(0, (Integer n, Integer n2)-> {
return (n2 > n && n2 < primeiroMaior.get()) ? n2 : n;
});
System.out.println("Numero reduce: " + x);
}
} |
Parabéns, @jpvalim. Só ficou um mais complexa a solução. Mas chegando no resultado, ótimo! |
Usei o limit hehe
|
Boa tarde, prô!
Estou com dúvida no exercicio 7, como localizar o segundo maior valor da lista usando stream, qual seria a maneira correta usando stream? pensei em organizar do menor para o maior, contar a quantidade de elementos da stream e usar o skip para pular ate o penultimo, mas nao parece ser a maneira correta...
The text was updated successfully, but these errors were encountered: