Programação Orientada a Objetos I
Prof. MSc. Leanderson André
leandersonandre@univille.br
Universidade da Região de Joinville
Listas representam computacionalmente o conceito matemático de sequência.
A api de listas é definida na interface java.util.List.
| Implementação | Descrição |
|---|---|
ArrayList | Armazena os elementos em um arranjo dinâmico, simulando um arranjo de tamanho variável. |
LinkedList | Armazena os elementos em nós duplamente encadeados, facilitando o acesso ao primeiro e ao último elemento. |
Prefira utilizar a interface List para declarar variáveis, parâmetros e atributos, deixando a implementação (ArrayList) como detalhe da instanciação.
import java.util.List;
import java.util.ArrayList;
// Criação de uma lista
List<Integer> lista = new ArrayList<>();
// Cria uma lista com capacidade inicial para 200 elementos.
List<Integer> lista2 = new ArrayList<Integer>(200);
// Inferência de tipos (variável do tipo ArrayList)
var lista3 = new ArrayList<Integer>();O método add(elemento) adiciona o elemento ao final da lista.
List<Integer> lista = new ArrayList<>();
lista.add(1);
lista.add(2);
lista.add(3);O método add(index,elemento) adiciona o elemento em uma posição específica da lista, deslocando os elementos seguintes.
List<Integer> lista = new ArrayList<>(List.of(1, 2, 3));
lista.add(1,99);O método get(index) retorna o elemento na posição index.
List<Integer> lista = new ArrayList<>(List.of(1, 2, 3));
var elemento = lista.get(1);
System.out.println(elemento); // 2O método set(index,elemento) substitui o elemento na posição index. O método retorna o elemento substituído.
List<Integer> lista = new ArrayList<>(List.of(1, 2, 3));
var substituido = lista.set(1,99);
System.out.println(substituido); // 2
System.out.println(lista.get(1)); // 99O método remove(index) remove o elemento na posição index e retorna o elemento removido. Os elementos seguintes são deslocados uma posição à esquerda.
List<Integer> lista = new ArrayList<>(List.of(1, 2, 3));
var removido = lista.remove(1);
System.out.println(removido); // 2
System.out.println(lista.get(1)); // 3O método remove(elemento) remove a primeira ocorrência do elemento na lista e retorna true se a remoção for realizada. Os elementos seguintes são deslocados uma posição à esquerda.
List<Integer> lista = new ArrayList<>(List.of(1, 2, 3));
lista.remove(1); // remove pela posição
lista.remove(Integer.valueOf(1)); // remove pelo valorvar lista = new ArrayList<Integer>();
// Verifica se a lista contém o elemento
// Retorna true ou false
var contem = lista.contains(99);
// Retorna o índice da primeira ocorrência
// Retorna -1 caso não encontre o elemento
var indice = lista.indexOf(99);// Retorna o índice da última ocorrência
var indice = lista.lastIndexOf(99);
// Retorna a quantidade de elementos
var tamanho = lista.size();
// Verifica se a lista está vazia
boolean vazio = lista.isEmpty();
// Remove todos os elementos da lista
lista.clear();A lista pode ser percorrida utilizando a estrutura de repetição for com índices, permitindo acessar cada elemento pela sua posição.
var lista = new ArrayList<Integer>();
for(var i = 0; i < lista.size(); i++){
System.out.println(lista.get(i));
}A estrutura for-each permite percorrer todos os elementos da lista, do primeiro ao último, sem a necessidade de utilizar índices.
var lista = new ArrayList<Integer>();
for(var elemento : lista){
System.out.println(elemento);
}O acesso a uma posição inexistente da lista provoca a exceção IndexOutOfBoundsException.
Um índice válido deve estar entre 0 e size() - 1.
List<Integer> lista = new ArrayList<>(List.of(10, 20, 30));
// Índice negativo
lista.get(-1); // IndexOutOfBoundsException
// Índice igual ao tamanho da lista
lista.get(3); // IndexOutOfBoundsException
// Índice maior que o tamanho da lista
lista.get(10); // IndexOutOfBoundsExceptionProf. MSc. Leanderson André
leandersonandre@univille.br
Universidade da Região de Joinville