AFF Education Construa seu Futuro

Aula 55 - Lista de Compras usando Vetor e ArrayList

Introdução

Nesta aula, vamos criar programas práticos de lista de compras usando tanto arrays tradicionais quanto ArrayList. Isso nos ajudará a entender melhor as diferenças e vantagens de cada abordagem.

Objetivo: Comparar na prática a flexibilidade do ArrayList versus a simplicidade do array tradicional.

Exemplo 1: Lista de Compras com Array

Primeiro, vamos criar uma lista de compras usando array tradicional:

public class ListaComprasArray {
    public static void main(String[] args) {
        // Array com tamanho fixo de 5 itens
        String[] listaCompras = new String[5];
        
        // Adicionando itens manualmente
        listaCompras[0] = "Arroz";
        listaCompras[1] = "Feijão";
        listaCompras[2] = "Macarrão";
        listaCompras[3] = "Açúcar";
        listaCompras[4] = "Café";
        
        // Exibindo a lista
        System.out.println("=== LISTA DE COMPRAS ===");
        for (int i = 0; i < listaCompras.length; i++) {
            System.out.println((i + 1) + ". " + listaCompras[i]);
        }
        
        System.out.println("\nTotal de itens: " + listaCompras.length);
    }
}

=== LISTA DE COMPRAS ===

1. Arroz

2. Feijão

3. Macarrão

4. Açúcar

5. Café

Total de itens: 5

Limitação: Se quisermos adicionar mais de 5 itens, precisaríamos criar um novo array maior e copiar todos os elementos!

Exemplo 2: Lista de Compras com ArrayList

Agora vamos criar a mesma lista usando ArrayList, que é muito mais flexível:

import java.util.ArrayList;

public class ListaComprasArrayList {
    public static void main(String[] args) {
        // ArrayList sem tamanho pré-definido
        ArrayList<String>  listaCompras = new ArrayList<>();
        
        // Adicionando itens dinamicamente
        listaCompras.add("Arroz");
        listaCompras.add("Feijão");
        listaCompras.add("Macarrão");
        listaCompras.add("Açúcar");
        listaCompras.add("Café");
        
        // Podemos adicionar mais itens facilmente!
        listaCompras.add("Leite");
        listaCompras.add("Pão");
        listaCompras.add("Ovos");
        
        // Exibindo a lista
        System.out.println("=== LISTA DE COMPRAS ===");
        for (int i = 0; i < listaCompras.size(); i++) {
            System.out.println((i + 1) + ". " + listaCompras.get(i));
        }
        
        System.out.println("\nTotal de itens: " + listaCompras.size());
    }
}

=== LISTA DE COMPRAS ===

1. Arroz

2. Feijão

3. Macarrão

4. Açúcar

5. Café

6. Leite

7. Pão

8. Ovos

Total de itens: 8

Vantagem: Com ArrayList, podemos adicionar quantos itens quisermos sem nos preocupar com o tamanho!

Exemplo 3: Lista de Compras Interativa (Array)

Vamos criar uma versão mais interativa usando Scanner e array:

import java.util.Scanner;

public class ListaComprasInterativaArray {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        String[] listaCompras = new String[10]; // Limite de 10 itens
        int contador = 0;
        
        System.out.println("=== LISTA DE COMPRAS ===");
        System.out.println("(Digite 'sair' para finalizar)");
        
        // Lendo itens do usuário
        while (contador < 10) {
            System.out.print("\nItem " + (contador + 1) + ": ");
            String item = entrada.nextLine();
            
            if (item.equalsIgnoreCase("sair")) {
                break;
            }
            
            listaCompras[contador] = item;
            contador++;
        }
        
        // Exibindo a lista final
        System.out.println("\n=== SUA LISTA DE COMPRAS ===");
        for (int i = 0; i < contador; i++) {
            System.out.println((i + 1) + ". " + listaCompras[i]);
        }
        
        System.out.println("\nTotal de itens: " + contador);
        entrada.close();
    }
}

=== LISTA DE COMPRAS ===

(Digite 'sair' para finalizar)

Item 1: Arroz

Item 2: Feijão

Item 3: Óleo

Item 4: sair

=== SUA LISTA DE COMPRAS ===

1. Arroz

2. Feijão

3. Óleo

Total de itens: 3

Exemplo 4: Lista de Compras Interativa (ArrayList)

Agora a mesma versão interativa com ArrayList - sem limite de itens:

import java.util.ArrayList;
import java.util.Scanner;

public class ListaComprasInterativaArrayList {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        ArrayList<String>  listaCompras = new ArrayList<>();
        
        System.out.println("=== LISTA DE COMPRAS ===");
        System.out.println("(Digite 'sair' para finalizar)");
        
        // Lendo itens sem limite
        while (true) {
            System.out.print("\nItem " + (listaCompras.size() + 1) + ": ");
            String item = entrada.nextLine();
            
            if (item.equalsIgnoreCase("sair")) {
                break;
            }
            
            listaCompras.add(item);
        }
        
        // Exibindo a lista final
        System.out.println("\n=== SUA LISTA DE COMPRAS ===");
        for (int i = 0; i < listaCompras.size(); i++) {
            System.out.println((i + 1) + ". " + listaCompras.get(i));
        }
        
        System.out.println("\nTotal de itens: " + listaCompras.size());
        entrada.close();
    }
}

=== LISTA DE COMPRAS ===

(Digite 'sair' para finalizar)

Item 1: Arroz

Item 2: Feijão

Item 3: Macarrão

Item 4: Açúcar

Item 5: Café

Item 6: sair

=== SUA LISTA DE COMPRAS ===

1. Arroz

2. Feijão

3. Macarrão

4. Açúcar

5. Café

Total de itens: 5

Exemplo 5: Lista de Compras com Preços

Vamos criar uma lista mais completa com itens e preços usando ArrayList:

import java.util.ArrayList;

public class ListaComprasComPrecos {
    public static void main(String[] args) {
        // Duas listas paralelas: itens e preços
        ArrayList<String>  itens = new ArrayList<>();
        ArrayList<Double> precos = new ArrayList<>();
        
        // Adicionando itens e seus preços
        itens.add("Arroz 5kg");
        precos.add(25.90);
        
        itens.add("Feijão 1kg");
        precos.add(8.50);
        
        itens.add("Macarrão 500g");
        precos.add(4.20);
        
        itens.add("Açúcar 1kg");
        precos.add(3.80);
        
        itens.add("Café 250g");
        precos.add(12.50);
        
        // Exibindo lista com preços
        System.out.println("=== LISTA DE COMPRAS ===");
        System.out.println("ITEM\t\t\tPREÇO");
        System.out.println("--------------------------------");
        
        double total = 0;
        for (int i = 0; i < itens.size(); i++) {
            System.out.printf("%s\t\tR$ %.2f\n", itens.get(i), precos.get(i));
            total += precos.get(i);
        }
        
        System.out.println("--------------------------------");
        System.out.printf("TOTAL:\t\t\tR$ %.2f\n", total);
    }
}

=== LISTA DE COMPRAS ===

ITEM PREÇO

--------------------------------

Arroz 5kg R$ 25.90

Feijão 1kg R$ 8.50

Macarrão 500g R$ 4.20

Açúcar 1kg R$ 3.80

Café 250g R$ 12.50

--------------------------------

TOTAL: R$ 54.90

Exemplo 6: Gerenciamento Completo de Lista

Um programa completo com opções para adicionar, remover e visualizar itens:

import java.util.ArrayList;
import java.util.Scanner;

public class GerenciadorLista {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        ArrayList<String> lista = new ArrayList<>();
        
        while (true) {
            System.out.println("\n=== LISTA DE COMPRAS ===");
            System.out.println("1. Adicionar item");
            System.out.println("2. Remover item");
            System.out.println("3. Ver lista");
            System.out.println("4. Sair");
            System.out.print("Escolha uma opção: ");
            
            int opcao = entrada.nextInt();
            entrada.nextLine(); // Limpar buffer
            
            if (opcao == 1) {
                System.out.print("Digite o item: ");
                String item = entrada.nextLine();
                lista.add(item);
                System.out.println("Item adicionado!");
                
            } else if (opcao == 2) {
                if (lista.isEmpty()) {
                    System.out.println("Lista vazia!");
                } else {
                    System.out.println("Itens:");
                    for (int i = 0; i < lista.size(); i++) {
                        System.out.println(i + ". " + lista.get(i));
                    }
                    System.out.print("Digite o número do item: ");
                    int indice = entrada.nextInt();
                    if (indice >= 0 && indice < lista.size()) {
                        String removido = lista.remove(indice);
                        System.out.println("Removido: " + removido);
                    } else {
                        System.out.println("Índice inválido!");
                    }
                }
                
            } else if (opcao == 3) {
                if (lista.isEmpty()) {
                    System.out.println("Lista vazia!");
                } else {
                    System.out.println("\n=== SUA LISTA ===");
                    for (int i = 0; i < lista.size(); i++) {
                        System.out.println((i + 1) + ". " + lista.get(i));
                    }
                    System.out.println("Total: " + lista.size() + " itens");
                }
                
            } else if (opcao == 4) {
                System.out.println("Até logo!");
                break;
            }
        }
        
        entrada.close();
    }
}

=== LISTA DE COMPRAS ===

1. Adicionar item

2. Remover item

3. Ver lista

4. Sair

Escolha uma opção: 1

Digite o item: Arroz

Item adicionado!

=== LISTA DE COMPRAS ===

1. Adicionar item

2. Remover item

3. Ver lista

4. Sair

Escolha uma opção: 3

=== SUA LISTA ===

1. Arroz

Total: 1 itens

Exercícios

Teste seus conhecimentos sobre listas de compras com Array e ArrayList:

1. Qual é a vantagem de usar ArrayList ao invés de Array para uma lista de compras?

2. Em um ArrayList chamado lista, como adicionar o item "Leite"?

3. Como remover o primeiro item de um ArrayList chamado compras?

4. Qual método verifica se um ArrayList está vazio?

5. Qual é a diferença entre .length (array) e .size() (ArrayList)?

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Qual método adiciona um item ao final de um ArrayList<String> lista?

2. Como obter a quantidade de itens em um ArrayList?