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.
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!
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!
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
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
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
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
Teste seus conhecimentos sobre listas de compras com Array e ArrayList:
Reforce o conteúdo desta aula com mais dois exercícios práticos: