1
resposta

Minha tentativa da questão 1

public class Exercicios {

    public static void main(String[] args) {


        List<String> input = Arrays.asList("10", "abc", "20", "30x");

        List<Integer> numbers = input.stream()
                .filter(s -> s.matches("\\d+")) // Filtra apenas números inteiros positivos
                .map(Integer::parseInt)
                .collect(Collectors.toList());

        System.out.println(numbers);


    }
}
1 resposta

Olá, Alan. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você utilizou streams para processar a lista e filtrar apenas os valores numéricos. A abordagem com regex (\\d+) é uma ótima escolha para garantir que apenas números inteiros positivos sejam considerados.

Uma alternativa interessante seria tratar possíveis exceções ao converter os valores, evitando problemas caso a entrada tenha caracteres inesperados. Veja este exemplo:


List<Integer> numbers = input.stream()
    .map(s -> {
        try {
            return Integer.parseInt(s);
        } catch (NumberFormatException e) {
            return null;
        }
    })
    .filter(Objects::nonNull)
    .collect(Collectors.toList());

System.out.println(numbers);

Isso evita que o programa pare caso encontre um valor inválido. Ótima prática para trabalhar com dados externos!

Conte com o apoio do Fórum. Abraços e bons estudos.