Skip to content

Desafio #27

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/stream_api/Desafio1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio1 {

public static void main(String[] args) {

/*
* - Desafio 1 - Mostre a lista na ordem numérica:
Crie um programa que utilize a Stream API para ordenar a lista de números em ordem crescente e a exiba no console.
*/

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

numeros.stream()
.sorted()
.forEach(numerosOrdenados -> System.out.println(String.format("Ordem numérica: %d", numerosOrdenados)));

}
}
26 changes: 26 additions & 0 deletions src/stream_api/Desafio10.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio10 {

public static void main(String[] args) {

/*- Desafio 10 - Agrupe os valores ímpares múltiplos de 3 ou de 5:

Utilize a Stream API para agrupar os valores ímpares múltiplos de 3 ou de 5 e exiba o resultado no console. */


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> multiplos = numeros.stream()
.filter(n -> n %3 == 0 || n %5 == 0)
.toList();

System.out.println("Números múltiplos de 3 ou 5: " + multiplos);

}


}
38 changes: 38 additions & 0 deletions src/stream_api/Desafio11.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package stream_api;

import java.util.Arrays;
import java.util.List;
//import java.util.stream.Collector;

public class Desafio11 {

public static void main(String[] args) {

/*
* - Desafio 11 - Encontre a soma dos quadrados de todos os números da lista:
Utilizando a Stream API, encontre a soma dos quadrados de todos os números da lista e exiba o resultado no console.

*/

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

Integer quadrados = numeros.stream()
.mapToInt(n -> n * n).sum();

System.out.println("A soma dos quadrados é: " + quadrados);

// OUTRA MANEIRA
/*List<Integer> quadrados = numeros.stream()
.map(n -> n * n)
.toList();

Integer soma = quadrados.stream()
.reduce(0, (a, b) -> a + b);

System.out.println("A soma dos quadrados é: " + soma);*/


}


}
25 changes: 25 additions & 0 deletions src/stream_api/Desafio12.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package stream_api;


import java.util.Arrays;
import java.util.List;

public class Desafio12 {

public static void main(String[] args) {


/*- Desafio 12 - Encontre o produto de todos os números da lista:
Com a ajuda da Stream API, encontre o produto de todos os números da lista e exiba o resultado no console. */

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

Long produto = numeros.stream()
.mapToLong(x -> x.longValue())
.reduce(1L,(a, b) -> a * b);


System.out.println("O produto dos números é: " + produto);

}
}
24 changes: 24 additions & 0 deletions src/stream_api/Desafio13.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio13 {


public static void main(String[] args) {

/*- Desafio 13 - Filtrar os números que estão dentro de um intervalo:

Utilize a Stream API para filtrar os números que estão dentro de um intervalo específico (por exemplo, entre 5 e 10) e exiba o resultado no console. */


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> intervalo = numeros.stream()
.filter(n -> n > 5 && n < 10)
.toList();

System.out.println("Números no intervalo de 5 a 10: " + intervalo);
}
}
94 changes: 94 additions & 0 deletions src/stream_api/Desafio14.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package stream_api;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.IntStream;

public class Desafio14 {

public static void main(String[] args) {

/*- Desafio 14 - Encontre o maior número primo da lista:
Com a Stream API, encontre o maior número primo da lista e exiba o resultado no console. */


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);


Optional<Integer> maiorPrimo = numeros.stream()
.filter(numero -> ehPrimo(numero)) // filtra apenas os números primos
.max(Comparator.naturalOrder()); // pega o maior deles


if (maiorPrimo.isPresent()) {
System.out.println("Maior número primo: " + maiorPrimo.get());
} else {
System.out.println("Nenhum número primo encontrado na lista.");
}
}



public static boolean ehPrimo(int numero) {
if (numero <= 1) return false; // verifica se é maior que 1

// Gera os números de 2 até a raiz quadrada do numero
// e verifica se algum divide o numero
return IntStream.rangeClosed(2, (int) Math.sqrt(numero))
.noneMatch(i -> numero % i == 0); // se nenhum dividir, é primo


}
}

/*IntStream.rangeClosed(inicio, fim) -gera uma sequência de números inteiros
.noneMatch: É um método de terminal da Stream API que retorna:
true se nenhum elemento da stream atender a condição.
false se algum elemento atender.
*/

/*-------------------------------------------- */
/*"Se nenhum número de 2 até √numero for divisor de numero, então o numero é primo."
* Math.sqrt(2) ≈ 1.41 ≈ 1
* Math.sqrt(3) ≈ 1.73 ≈ 1
*
* Como o range começa em 2, 1 < 2, vai retornar vazio -> true
*
* Math.sqrt(4) = 2 -> IntStream.rangeClosed(2, 2) -> 4 % 2 == 0, então não é primo -> false
* Math.sqrt(5) ≈ 2.24 -> IntStream.rangeClosed(2, 2) -> 4 % 2 != 0, então é primo -> true
* ...
*/


/*-------------------------------------------- */


/*
* public static boolean isPrimo(int n) {
// Obtém o valor absoluto do número para garantir que seja positivo
n = Math.abs(n);

// Verifica se o número é menor ou igual a 1, caso contrário, não é primo
if (n <= 1) {
return false;
}

// Faz um loop de 2 até a raiz quadrada do número
for (int i = 2; i * i <= n; i++) {
// Se o número for divisível por algum valor no intervalo, não é primo
if (n % i == 0) {
return false;
}
}

// Se não foi encontrado divisor no loop, o número é primo
return true;
}
}
*
*
*
*
*/
24 changes: 24 additions & 0 deletions src/stream_api/Desafio15.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio15 {

public static void main(String[] args) {

/* - Desafio 15 - Verifique se a lista contém pelo menos um número negativo:

Utilizando a Stream API, verifique se a lista contém pelo menos um número negativo e exiba o resultado no console.
*/

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

boolean negativo = numeros.stream()
.anyMatch(n -> n < 0);

System.out.println("Existem números negativos? " + negativo);


}
}
30 changes: 30 additions & 0 deletions src/stream_api/Desafio16.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio16 {

public static void main(String[] args) {
/*- Desafio 16 - Agrupe os números em pares e ímpares:

Utilize a Stream API para agrupar os números em duas listas separadas,
uma contendo os números pares e outra contendo os números ímpares da lista original,
e exiba os resultados no console. */

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> pares = numeros.stream()
.filter(n -> n % 2 == 0)
.toList();

List<Integer> impares = numeros.stream()
.filter(n -> n % 2 != 0)
.toList();

System.out.println("Números pares: " + pares);
System.out.println("Números ímpares: " + impares);

}

}
30 changes: 30 additions & 0 deletions src/stream_api/Desafio17.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package stream_api;

import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;

public class Desafio17 {

public static void main(String[] args) {

/*- Desafio 17 - Filtrar os números primos da lista:
Com a ajuda da Stream API, filtre os números primos da lista e exiba o resultado no console. */
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> primos = numeros.stream()
.filter(numero -> ehPrimo(numero))
.toList();

System.out.println("Lista de números primos: " + primos);

}
// Método: explicação desafio 14
public static boolean ehPrimo(int numero) {
if (numero <= 1) return false; // verifica se é maior que 1


return IntStream.rangeClosed(2, (int) Math.sqrt(numero))
.noneMatch(i -> numero % i == 0); // se nenhum dividir, é primo
}
}
33 changes: 33 additions & 0 deletions src/stream_api/Desafio18.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package stream_api;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class Desafio18 {

public static void main(String[] args) {

/* - Desafio 18 - Verifique se todos os números da lista são iguais:
Utilizando a Stream API, verifique se todos os números da lista são iguais
e exiba o resultado no console. */
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

Set<Integer> setNumeros = new HashSet<>(); // set: eliminar repetições
List<Integer> numerosRepetidos = numeros.stream() // percorre toda a lista
.filter(n -> !setNumeros.add(n)) // compara o set com a lista original
.toList(); // adiciona à nova lista os números repetidos
System.out.println("Números repetidos: " + numerosRepetidos);

/*
if (setNumeros.size() == 1) { // é 1 porque set só permite um único valor
System.out.println("Todos os números da lista são iguais.");
} else {
System.out.println("Nem todos os números da lista são iguais.");
}*/

}

}
27 changes: 27 additions & 0 deletions src/stream_api/Desafio19.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package stream_api;

import java.util.Arrays;
import java.util.List;

public class Desafio19 {

public static void main(String[] args) {

/*- Desafio 19 - Encontre a soma dos números divisíveis por 3 e 5:

Com a Stream API, encontre a soma dos números da lista que são divisíveis tanto por 3 quanto por 5 e exiba o resultado no console. */
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 3);

List<Integer> divisivel = numeros.stream()
.filter(n -> n % 3 == 0 && n %5 == 0)
.toList();

int soma = divisivel.stream()
.reduce(0, (a, b) -> a + b);


System.out.println("Divisível de 3 e 5 (15): " + divisivel);
System.out.println("Soma: " + soma);

}
}
Loading