Return a list of even numbers in a list and odd numbers in another list?

Asked

Viewed 1,500 times

1

Good night!! I need to create a method that receives a list of integers and returns a list from that list, containing in one of the lists the even numbers and in another list the numbers odd. So far I’ve managed to do just that:

    public List<Integer> listaparesimpares(List<Integer> numeros){
    List<Integer> listaparesimpares = new ArrayList<>();

    listaparesimpares.add(1);
    listaparesimpares.add(2);
    listaparesimpares.add(3);
    Integer par = 0;
    Integer impar = 0;
    for(int i = 0; i < listaparesimpares i++)
        if(i % 2 ==0) {
            List<>
        }




    return listaparesimpares;
}

1 answer

1

A possible solution would be to return a List from a list of integers that would have in the first position the even numbers and in the second the odd ones, would be like this:

public List<List<Integer>> listaParesImpares(List<Integer> numeros) {

    // Instancia uma lista para numeros pares e uma para os impares
    List<Integer> listaPares = new ArrayList<>();
    List<Integer> listaImpares = new ArrayList<>();

    // Para cadas numero na lista de numeros passados no parametro faça
    numeros.forEach(numero -> {
        // Se o numero for divisivel por 2 adicione-o a lista de pares
        if (numero % 2 == 0) listaPares.add(numero);
        // Senao adicione-o a lista de impares
        else listaImpares.add(numero);
    });

    // Criasse uma Lista de Listas de inteiro
    List<List<Integer>> resultado = new ArrayList<>();

    // Adicionasse a lista de numeros pares
    resultado.add(listaPares);

    // Adicionasse a lista de numeros impares
    resultado.add(listaImpares);

    // O resultado sera uma lista onde no indice 0 voce
    // tera uma lista contendo os numeros pares e no indice 1
    // uma lista dos numeros impares
    return resultado;
}

You could use this function as follows:

public static void main(String[] args) {

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

    System.out.println("Impressao dos Numeros Pares");
    List<Integer> listaPares = listaParesImpares.get(0);
    listaPares.forEach(System.out::println);

    System.out.println("\n\n");

    System.out.println("Impressao dos Numeros Impares");
    List<Integer> listaImpares = listaParesImpares.get(1);
    listaImpares.forEach(System.out::println);

}

Another solution however that I consider better would be to return a String Map and Integer List, in this solution the map would have an entry "even" containing the list of even numbers and an entry "odd" with the list of odd numbers, would be like this:

public Map<String, List<Integer>> mapParesImpares(List<Integer> numeros) {

    // Instancia uma lista para numeros pares e uma para os impares
    List<Integer> listaPares = new ArrayList<>();
    List<Integer> listaImpares = new ArrayList<>();

    // Para cadas numero na lista de numeros passados no parametro faça
    numeros.forEach(numero -> {
        // Se o numero for divisivel por 2 adicione-o a lista de pares
        if (numero % 2 == 0) listaPares.add(numero);
        // Senao adicione-o a lista de impares
        else listaImpares.add(numero);
    });

    // Criasse o Map
    Map<String, List<Integer>> resultado = new HashMap<>();

    // Adicionasse a lista de numeros pares
    resultado.put("pares", listaPares);

    // Adicionasse a lista de numeros impares
    resultado.put("impares", listaImpares);

    // O resultado sera uma map onde para a chave "pares"
    // tera uma lista contendo os numeros pares e para a chave "impares"
    // uma lista dos numeros impares
    return resultado;
}

To use this function would be:

public static void main(String[] args) {

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

    System.out.println("Impressao dos Numeros Pares");
    List<Integer> listaPares = mapParesImpares.get("pares");
    listaPares.forEach(System.out::println);

    System.out.println("\n\n");

    System.out.println("Impressao dos Numeros Impares");
    List<Integer> listaImpares = mapParesImpares.get("impares");
    listaImpares.forEach(System.out::println);

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.