Programação Orientada a Objetos
java.util).List e seu uso.ArrayList e LinkedList.Collections.sort e Comparator.Coleções são estruturas de dados prontas do Java para armazenar e manipular grupos de objetos.
Pacote principal: java.util
List é uma coleção ordenada que permite elementos duplicados.
Principais implementações:
ArrayListLinkedList
import java.util.List;
import java.util.ArrayList;
public class ExemploList {
public static void main(String[] args) {
List<String> nomes = new ArrayList<>();
nomes.add("Ana");
nomes.add("Pedro");
nomes.add("Ana"); // permitido repetir
System.out.println("Tamanho: " + nomes.size());
System.out.println("Primeiro: " + nomes.get(0));
System.out.println("Lista completa: " + nomes);
}
}
get(i)).
import java.util.ArrayList;
import java.util.List;
public class ExemploArrayList {
public static void main(String[] args) {
List<String> frutas = new ArrayList<>();
frutas.add("Maçã");
frutas.add("Banana");
frutas.add("Laranja");
frutas.add(1, "Pera"); // insere no índice 1
System.out.println(frutas); // [Maçã, Pera, Banana, Laranja]
}
}
import java.util.LinkedList;
import java.util.List;
public class ExemploLinkedList {
public static void main(String[] args) {
List<String> tarefas = new LinkedList<>();
tarefas.add("Estudar Java");
tarefas.add("Revisar exercícios");
tarefas.add(0, "Ler anotações"); // inserção no início
System.out.println(tarefas);
}
}
List<String> nomes = new ArrayList<>();
// adicionar
nomes.add("João");
nomes.add("Maria");
// acessar
String primeiro = nomes.get(0);
// atualizar
nomes.set(1, "Maria Clara");
// remover por valor
nomes.remove("João");
// remover por índice
nomes.remove(0);
// tamanho
int tamanho = nomes.size();
List<String> nomes = List.of("Ana", "Bruno", "Carlos");
// for tradicional
for (int i = 0; i < nomes.size(); i++) {
System.out.println(i + ": " + nomes.get(i));
}
// for-each
for (String nome : nomes) {
System.out.println(nome);
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ExemploIterator {
public static void main(String[] args) {
List<String> nomes = new ArrayList<>();
nomes.add("Ana");
nomes.add("Bruno");
nomes.add("Carlos");
Iterator<String> it = nomes.iterator();
while (it.hasNext()) {
String nome = it.next();
System.out.println(nome);
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OrdenacaoSimples {
public static void main(String[] args) {
List<String> nomes = new ArrayList<>();
nomes.add("Carlos");
nomes.add("Ana");
nomes.add("Beatriz");
Collections.sort(nomes); // ordem alfabética
System.out.println(nomes); // [Ana, Beatriz, Carlos]
}
}
class Pessoa {
String nome;
int idade;
Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
@Override
public String toString() {
return nome + " (" + idade + ")";
}
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class OrdenacaoPessoas {
public static void main(String[] args) {
List<Pessoa> pessoas = new ArrayList<>();
pessoas.add(new Pessoa("Ana", 30));
pessoas.add(new Pessoa("João", 20));
pessoas.add(new Pessoa("Beatriz", 25));
// Por idade crescente
pessoas.sort(Comparator.comparingInt(p -> p.idade));
System.out.println("Por idade: " + pessoas);
// Por nome (alfabético)
pessoas.sort(Comparator.comparing(p -> p.nome));
System.out.println("Por nome: " + pessoas);
}
}
List<String> nomes = List.of("Ana", "Bruno", "Carlos");
String alvo = "Bruno";
boolean existe = nomes.contains(alvo);
if (existe) {
System.out.println(alvo + " está na lista!");
} else {
System.out.println(alvo + " NÃO está na lista.");
}
Busca linear: percorre a lista do início ao fim.
Requer que a lista esteja ordenada.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class BuscaBinaria {
public static void main(String[] args) {
List<String> nomes = new ArrayList<>();
nomes.add("Carlos");
nomes.add("Ana");
nomes.add("Beatriz");
Collections.sort(nomes); // [Ana, Beatriz, Carlos]
int pos = Collections.binarySearch(nomes, "Beatriz");
if (pos >= 0) {
System.out.println("Encontrado no índice: " + pos);
} else {
System.out.println("Não encontrado.");
}
}
}
| Operação | ArrayList | LinkedList |
|---|---|---|
| Acesso por índice | Rápido (O(1)) | Lento (O(n)) |
| Inserir/remover no fim | Rápido | Rápido |
| Inserir/remover no meio | Mais lento (realoca/shift) | Mais eficiente |
| Uso de memória | Mais compacto | Mais overhead (ponteiros) |
Objetivo: praticar criação de ArrayList e ordenação.
ArrayList<String> para armazenar nomes de alunos.Objetivo: trabalhar com listas de objetos e Comparator.
Produto com:
String nomedouble precoList<Produto> e adicione 5 produtos.Objetivo: praticar busca linear e binária.
contains (busca linear).Collections.binarySearch.Crie um sistema simples de carrinho de compras usando List.
Produto (nome, preço).Dúvidas? 🤔