Escolar Documentos
Profissional Documentos
Cultura Documentos
Ministério da Educação
Secretaria de Educação Profissional e Tecnológica
Instituto Federal de Educação, Ciência e Tecnologia do Pernambuco - IFPE
Campus Igarassu
Há algumas opções em Java quando se precisa de uma lista de elementos, cada uma com suas próprias
caracterı́sticas e usos especı́ficos. Alguns exemplos incluem:
2. LinkedList: é outra implementação da interface List em Java. Ele também fornece uma lista dinâmica
de elementos, mas sua implementação interna usa uma estrutura de dados de lista encadeada, que pode
ser mais eficiente em algumas operações, como inserção e remoção de elementos no meio da lista.
3. Vector: é uma classe semelhante ao ArrayList, mas é sincronizada, o que significa que é seguro para
uso em ambientes multithread. No entanto, o Vector é menos eficiente que o ArrayList em algumas
operações.
4. HashSet: é uma implementação da interface Set em Java. Ele armazena um conjunto de elementos
únicos, sem ordem especı́fica. Isso significa que ele pode ser usado para remover elementos duplicados
de uma lista.
Quando surge alguma necessidade de aplicar arrays em programação, há alguns motivos para se preferir
arrays dinâmicos a estáticos:
1. Flexibilidade: ArrayList é uma implementação da interface List, que é uma coleção dinâmica em Java.
Isso significa que ela pode crescer ou diminuir conforme necessário. Em contraste, arrays estáticos têm
um tamanho fixo e precisam ser dimensionados explicitamente. Isso torna o ArrayList mais flexı́vel e
fácil de usar.
2. Gerenciamento de memória: Com arrays estáticos, é preciso alocar uma quantidade fixa de
memória para armazenar elementos, mesmo que essa quantidade seja muito maior do que o necessário.
Page 1 of 4
Prof. Gustavo Nóbrega Nota de Aula - P.O.O. (Ensino Presencial) - POO
Isso pode levar a desperdı́cio de memória. Por outro lado, o ArrayList aloca automaticamente a quan-
tidade necessária de memória conforme os elementos são adicionados, o que pode economizar espaço
de memória.
3. Funcionalidades adicionais: O ArrayList oferece muitas funcionalidades adicionais que não estão
disponı́veis em arrays estáticos, como adicionar ouu remover elementos em qualquer posição da lista,
encontrar elementos por ı́ndice ou valor, ordenação e muito mais.
4. Facilidade de uso: O ArrayList é mais fácil de usar do que arrays estáticos, pois oferece muitos
métodos úteis para manipulação de elementos. Isso torna o código mais legı́vel e fácil de manter.
5. Segurança de tipo: O ArrayList é uma coleção genérica, o que significa que pode ser fortemente
tipado. Isso garante que apenas elementos do tipo desejado possam ser adicionados à lista, evitando
erros de tempo de execução que podem ocorrer com arrays estáticos.
1. Inserção e remoção de elementos: LinkedList é geralmente mais rápido do que ArrayList quando
se trata de inserção e remoção de elementos, especialmente em grandes conjuntos de dados. Isso ocorre
porque LinkedList usa ponteiros para conectar os elementos, enquanto ArrayList precisa realocar a
memória para alocar espaço adicional para os elementos quando o tamanho do array inicial é atingido.
2. Acesso a elementos: ArrayList é mais rápido do que LinkedList quando se trata de acesso aleatório
aos elementos, ou seja, quando você precisa acessar um elemento especı́fico no array. Isso ocorre porque
ArrayList armazena os elementos em um array contı́guo, enquanto LinkedList precisa percorrer a lista
para encontrar o elemento desejado.
3. Sincronização: Vector é sincronizado, o que significa que pode ser usado em ambientes multithread,
mas isso pode afetar o desempenho em comparação com ArrayList ou LinkedList, que não são sin-
cronizados.
4. Ordenação: TreeSet é uma estrutura de dados que mantém os elementos em ordem crescente ou
decrescente, o que pode ser útil em alguns casos. No entanto, a ordenação dos elementos também pode
afetar o desempenho em comparação com HashSet, que não tem uma ordem especı́fica.
Page 2 of 4
Prof. Gustavo Nóbrega Nota de Aula - P.O.O. (Ensino Presencial) - POO
Sendo assim, o ArrayList é uma boa escolha para o programador iniciante porque é fácil de aprender
e tem uma ampla documentação disponı́vel na Internet. Isso torna mais fácil para o programador encon-
trar exemplos, tutoriais e outras informações que possam ajudá-lo a entender como usar corretamente essa
estrutura de dados.
No entanto, é importante lembrar que o ArrayList nem sempre é a melhor opção para todas as aplicações.
Conforme o programador adquire mais experiência, ele deve se familiarizar com outras estruturas de dados,
como LinkedList, HashSet, HashMap, entre outras, e escolher a mais apropriada para cada caso especı́fico.
Remover elementos:
remove(): remove o último elemento do ArrayList.
1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . remove () ; // remove o elemento2
Acessar elementos:
get(): retorna o elemento de uma posição especı́fica do ArrayList.
1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . get (1) ; // retorna o elemento2
Page 3 of 4
Prof. Gustavo Nóbrega Nota de Aula - P.O.O. (Ensino Presencial) - POO
Esses são apenas alguns exemplos dos principais métodos do ArrayList em Java. É importante lembrar
que existem muitos outros métodos disponı́veis nessa estrutura de dados, que podem ser úteis em diferentes
situações. Verifique a documentação do ArrayList em https://docs.oracle.com/javase/8/docs/api/
java/util/ArrayList.html
Este documento apresenta de forma resumida alguns conceitos sobre POO. No entanto, a leitura deste
material não é suficiente para condução de seus estudos. Sendo assim, procure o livro texto da disciplina:
Java Como Programar Deitel 8° Edição
Page 4 of 4