Você está na página 1de 4

Prof. Gustavo Nóbrega Nota de Aula - P.O.O.

(Ensino Presencial) - POO

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

Curso: Tecnologia de Sistemas para Internet


Disciplina: Programação Orientada a Objetos - POO
Série: 3º Perı́odo Superior
Nome:
Matrı́cula:

Nota de Aula: Arrays e Multiplicidade entre Classes


O que são arrays em P.O.O.
Arrays são estruturas de dados em programação orientada a objetos que permitem armazenar uma coleção
de elementos do mesmo tipo em uma única variável. Em Java, os arrays são objetos que podem ser criados
usando a palavra-chave ”new” e especificando o tipo de elementos que serão armazenados e o tamanho do
array.
Por exemplo, para criar um array de inteiros com 5 elementos, pode-se fazer o seguinte:
1 int [] meuArray = new int [5];

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:

1. ArrayList: como mencionado anteriormente, o ArrayList é uma implementação da interface List em


Java. Ele fornece uma lista dinâmica de elementos que pode crescer ou diminuir conforme necessário,
tornando-o mais flexı́vel do que um array estático.

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.

Como escolher a estrutura de dados?


A escolha da estrutura de dados a ser utilizada em um programa depende de vários fatores, como o tamanho
e complexidade dos dados, a frequência das operações que serão realizadas (inserção, remoção, busca, or-
denação, etc.), o espaço disponı́vel em memória, a necessidade de ordenação ou de controle de duplicatas, a
possibilidade de operações concorrentes e o tempo de resposta esperado.
As estruturas de dados que foram mencionadas anteriormente, como ArrayList, LinkedList, Vector, Hash-
Set e TreeSet, possuem diferenças de desempenho dependendo do tipo de operação que está sendo realizada.
Aqui estão algumas diferenças gerais de desempenho entre essas estruturas:

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.

No entanto, considerando o inı́cio do aprendizado em programação, é recomendável que inicie a aplicação


dessas estruturas por meio do ArrayList. Uma das razões pelas quais o programador iniciante deve começar
com ArrayList é porque esta é uma das estruturas de dados mais simples e fáceis de usar. Além disso, é
uma das estruturas de dados mais comuns e amplamente utilizadas em Java e em muitas outras linguagens
de programação. Outra razão é que o ArrayList permite acessar elementos de forma rápida e fácil, o que o
torna ideal para muitos tipos de aplicações. Também é possı́vel adicionar e remover elementos do ArrayList
facilmente, embora isso possa ser mais lento do que com outras estruturas de dados, como LinkedList.
Além disso, o ArrayList é uma estrutura de dados de tamanho dinâmico, ou seja, pode crescer ou encolher
conforme necessário. Isso significa que o programador não precisa se preocupar com o tamanho máximo da
estrutura de dados ao criá-la, o que pode ser uma vantagem em muitas situações.

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.

Exemplos de Utilização - ArrayList


O ArrayList é uma das estruturas de dados mais comuns e amplamente utilizadas em Java. Abaixo estão
alguns exemplos de como usar os principais métodos do ArrayList em Java:
Adicionar elementos:
add(): adiciona um elemento no final do ArrayList.
1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;

add(index, element): adiciona um elemento em uma posição especı́fica do ArrayList.


1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento3 " ) ;
4 lista . add (1 , " elemento2 " ) ; // adiciona o elemento2 na p o s i o 1

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

remove(index): remove 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 . add ( " elemento3 " ) ;
5 lista . remove (1) ; // remove o elemento2

removeAll(): remove todos os elementos do ArrayList.


1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . add ( " elemento3 " ) ;
5 lista . removeAll ( lista ) ; // remove todos os elementos

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

size(): retorna o tamanho do ArrayList.


1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . size () ; // retorna 2

Page 3 of 4
Prof. Gustavo Nóbrega Nota de Aula - P.O.O. (Ensino Presencial) - POO

contains(): verifica se o ArrayList contém um determinado elemento.


1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . contains ( " elemento2 " ) ; // retorna true

indexOf(): retorna o número inteiro correspondente ao ı́ndice do elemento no array.


1 ArrayList < String > lista = new ArrayList < >() ;
2 lista . add ( " elemento1 " ) ;
3 lista . add ( " elemento2 " ) ;
4 lista . add ( " elemento3 " ) ;
5 int posicao = lista . indexOf ( " elemento2 " ) ; // retorna 1
6 int posicao2 = lista . indexOf ( " elemento4 " ) ; // retorna -1

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

Você também pode gostar